atari-home.de - Foren
Software => Coding => Thema gestartet von: mstz 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
-
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.
-
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
-
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.
-
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