{$path "ram:include/","PAS:include/" } {$incl "intuition.lib"} {­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­ ARP-FileRequester-Demo ­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­ ­­ ­­ Autor : Roger Fischlin ­­ ­­ Steigerwaldweg 6 ­­ ­­ 6450 Hanau 7 ­­ ­­ ­­ ­­ Datum : 23.Mai.1990 ­­ ­­ ­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­ ARP-Library wird benötigt ! ­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ Der Funktion FileReq müssen folgende Parameter übergeben werden : Window : Zeiger auf Window (FileRequester erscheint auf selbem Screen) oder NIL Windowtitel : Titel für FileRequester Datei : String für Dateiname (Typ : DATEINAME) Sollte der Anwender das Cancel-Gadget anklicken, ist Datei ein Leerstring } Type DATEINAME = String[72]; { Kurzfassung für ARP-Include-File } Var ArpBase : ptr; Library ArpBase: -294 : Function FileRequest(a0: Ptr): Long; end; Type FileRequester = record; FR_Hail : Str; FR_File : Ptr; FR_Dir : Ptr; FR_Window : p_Window; FR_FuncFlags : Byte; FR_Reserved1 : Byte; FR_Function : Ptr; FR_Reserved2 : Long; end; Procedure FileReq (Window : p_Window; Windowtitel : Str; Var Datei: DATEINAME); Var Struktur : FileRequester; { FileRequester-Struktur } Name : Long; { Zeiger auf Filename } Pfad : Long; { Zeiger auf Pfad } Zeiger : ^Byte; { Zeiger zum Erstellen des Dateinamens } begin OpenLib(ArpBase,"arp.library",0); { ARP-Library öffnen } Pfad:=Alloc_Mem(72,$10001); { Speicher für Name und Pfad anfordern } Name:=Pfad+36; { Speicher aufteilen } with Struktur do { Struktur aufbauen } begin FR_Hail:=Windowtitel; FR_File:=Ptr(Name); FR_Dir:=Ptr(Pfad); FR_Window:=NIL; FR_FuncFlags:=0; FR_Reserved1:=0; FR_Function:=NIL; FR_Reserved2:=0; end; Datei:=""; { Dateinamen löschen } IF FileRequest(^Struktur)<>0 then { versteckter Funktionsaufruf } begin Zeiger:=Ptr(Pfad); { Aus Speicherinhalt String aufbauen } while Zeiger^<>0 do { bis zum 0-Byte } begin Datei:=Datei+Chr(Zeiger^); Zeiger:=Ptr(Long(Zeiger)+1); end; { Pfad mit "/" ergänzen, falls Pfad kein Device (z.B. "DF0:") ist } if Datei<>"" then if Datei[StrLen(Datei)]<>":" then Datei:=Datei+"/"; Zeiger:=Ptr(Name); { Aus Speicherinhalt den Filenamen } while Zeiger^<>0 do { als String aufbauen } begin Datei:=Datei+Chr(Zeiger^); Zeiger:=Ptr(Long(Zeiger)+1); end; end; Free_Mem(Pfad,72); CloseLib(ArpBase); end; {­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­} Var Name : DateiName; { Filename mit Pfad } Begin FileReq(NIL,"ARP-FileRequester",Name); { FileRequester aufrufen } If Name<>"" then writeln("Dateiname : ",Name) { Name anzeigen } else writeln("Keine Datei ausgewählt."); End.