Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249681 (11117)
  Suchen
 Zurück zur Übersicht
 AutorThema: Übergabe eines Pointers auf Struktur
Stefan Schnell
Datum:27.05.01 19:25 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Community,

versuche gerade dem WinAPI die Adresse auf eine Struktur zu übergeben und gehe wie folgt vor:

Funktion für ZeroTerminatedString:
Def @ZeroStr(1) @Add$(@$(1), @Chr$(0))

Let FileName$ = @ZeroStr("TEST.DAT")
Let FileType$ = @ZeroStr("RAW")

Declare DocInfo#
Struct Doc_Info_1 = DocName&, OutputFile&, DataType&
Dim DocInfo#, Doc_Info_1

With DocInfo#
.DocName& = @Addr(FileName$)
.OutputFile& = 0
.DataType& = @Addr(FileType$)
EndWith

@StartDocPrinter(PrinterHandle&, 1, @Addr(DocInfo#))

Folgende Fragen dazu:
1. Ist diese Vorgehensweis für die Definition einer Struktur und deren Adressübergabe aus Profan überhaupt legetim?
2. Verträgt das WinAPI überhaupt diese Art der Übergabe, oder wird vom WinAPI etwas anderes erwartet?

Danke für Eure Antworten
Tschüss
Stefan



Sebastian König
Datum: 27.05.01 21:12 Antwortenals Email verschicken (webmaster@sekoenig.de) 



Hallo,

zu 1.: Profan²-Bereichsvariablen sind Zeiger auf den mit DIM allokierten Speicher. Um also einen Zeiger auf die Struktur zu übergeben, musst Du statt @Addr(DocInfo#) einfach nur DocInfo# übergeben. Mit @Addr(DocInfo#) übergibst Du einen Zeiger auf einen Zeiger. Das ist zwar möglich, wird aber eher selten benötigt.

zu 2.: Ja, das Win32-API verträgt diese Art der Übergabe.

Ich hoffe, Ich konnte Dir helfen.

MfG

Sebastian


 Zurück zur Übersicht