Autor Thema: PurePascal: Frage zu Fdatime  (Gelesen 4377 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline mstz

  • Benutzer
  • Beiträge: 48
PurePascal: Frage zu Fdatime
« am: Sa 26.01.2013, 00:21:47 »
Hallo,

mit PurePascal habe ich derzeit das folgende Problem:

Definiert ist auf übliche Weise unter "type"

 DOSTIME = record
  time: Word;
  date: Word;
 end;
 dt = ^DOSTIME;

Der Aufruf von Fdatime erfolgt nun mit:

var
 timeptr: dt;

begin
  timeptr:=NIL;
  Fdatime( timeptr, filehandle, 0 );
 end;

Und laut der PurePascal Doku sollte der Aufruf von "Fdatime"
mit timeptr als erstem von drei Argumenten wie beschrieben erfolgen,
erzeugt auf meinem System aber Fehlermeldungen (falscher Typ des ersten Parameters).

Habt ihr Beispiele für die Verwendung von Fdatime oder Ideen, was schiefläuft?
(Auch laut der TOS-Doku sollte der erste Parameter ein Zeiger auf die Struktur DOSTIME sein.)

Danke im Voraus und viele Grüße
 Markus

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: PurePascal: Frage zu Fdatime
« Antwort #1 am: Sa 26.01.2013, 00:52:11 »
Hallo,

mit PurePascal habe ich derzeit das folgende Problem:

Definiert ist auf übliche Weise unter "type"

 DOSTIME = record
  time: Word;
  date: Word;
 end;
 dt = ^DOSTIME;

Der Aufruf von Fdatime erfolgt nun mit:

var
 timeptr: dt;

begin
  timeptr:=NIL;
  Fdatime( timeptr, filehandle, 0 );
 end;

Und laut der PurePascal Doku sollte der Aufruf von "Fdatime"
mit timeptr als erstem von drei Argumenten wie beschrieben erfolgen,
erzeugt auf meinem System aber Fehlermeldungen (falscher Typ des ersten Parameters).

Habt ihr Beispiele für die Verwendung von Fdatime oder Ideen, was schiefläuft?
(Auch laut der TOS-Doku sollte der erste Parameter ein Zeiger auf die Struktur DOSTIME sein.)

Danke im Voraus und viele Grüße
 Markus

timeptr darf kein NIL-Zeiger sein, sondern einer auf einen existierenden DOSTIME-record, meine ich. Dort werden die Werte reinkopiert.
And remember: Beethoven wrote his first symphony in C

Offline mstz

  • Benutzer
  • Beiträge: 48
Re: PurePascal: Frage zu Fdatime
« Antwort #2 am: Sa 26.01.2013, 22:02:16 »
Hallo mfro,

ja, aber es funktioniert bei mir einfach nicht: auch

var
 timeptr: dt;

begin
  New( timeptr );
  Fdatime( timeptr, filehandle, 0 );
  Dispose( timeptr );
 end;

oder auch:

var
 timeptr: ^DOSTIME;
 dtime: DOSTIME;

begin
 timeptr:=@dtime;

 Fdatime( timeptr, filehandle, 0);
end;

scheitert mit "Error: Types of actual and formal var parameters must be identical". Der Blick in die Pure Pascal Doku zeigt aber:

procedure Fdatime( var timeptr: DOSTIME; handle, wflag: Integer);

was der Beschreibung widerspricht... Anyway: auch eine Variable vom Typ DOSTIME zu übergeben scheitert.

Unter Pure C funktioniert das ganze übrigens problemlos, z. B.:

unsigned getfdate( int handle )
{
 DOSTIME *timeptr;
 DOSTIME times;
 
 timeptr=×
 
 Fdatime( timeptr, handle, 0 );
}

Irgendetwas sehe ich hier nicht???

Viele Grüße
 Markus

gstoll

  • Gast
Re: PurePascal: Frage zu Fdatime
« Antwort #3 am: So 27.01.2013, 07:28:55 »
rgendetwas sehe ich hier nicht???

USES TOS;

VAR
 timer: DOSTIME;
 filehandle : integer;

begin
   filehandle := 0;
 Fdatime( timer, filehandle, 0);
end.

Das obige sollte gehen.  DOSTIME ist übrigends schon in TOS.INT definiert, welche ja durch USES TOS eingebunden wird.

Offline mstz

  • Benutzer
  • Beiträge: 48
Re: PurePascal: Frage zu Fdatime
« Antwort #4 am: So 27.01.2013, 20:46:38 »
Hallo Gerhard,

vielen Dank für den entscheidenden Hinweis, dass DOSTIME schon in der TOS.INT definiert ist.

Eigentlich sehr einfach, das Problem war die Neudefinition von "DOSTIME", zwar wie in der Doku zu Pure Pascal definiert, aber trotzdem falsch.

Als ich den Code von Pure C nach Pascal übetragen habe, ist mir das nicht aufgefallen. Jetzt kompiliert alles  :)

Beste Grüße
 Markus