{$if not def AP_DATEIOPERATIONEN_H} CONST AP_DATEIOPERATIONEN_H = 0; VAR fs,akt:LONG;STATIC; PROCEDURE datensatzlesen; VAR s : STRING[256]; b : STRING[50]; x : STR; d : BOOLEAN; BEGIN New(PNode); Readln(f,PNode^.name); akt := akt + Length(PNode^.name)+1; Readln(f,PNode^.vorname); akt := akt + Length(PNode^.vorname)+1; Readln(f,PNode^.strasse); akt := akt + Length(PNode^.strasse)+1; Readln(f,PNode^.plz); akt := akt + Length(PNode^.plz)+1; Readln(f,PNode^.ort); akt := akt + Length(PNode^.ort)+1; Readln(f,PNode^.tel); akt := akt + Length(PNode^.tel)+1; Readln(f,PNode^.fax); akt := akt + Length(PNode^.fax)+1; Readln(f,PNode^.geb); akt := akt + Length(PNode^.geb)+1; ReadLn(f,PNode^.EMail1); akt := akt + Length(PNode^.EMail1)+1; Readln(f,PNode^.EMail2); akt := akt + Length(PNode^.EMail2)+1; Readln(f,PNode^.kommentar); akt := akt + Length(PNode^.kommentar)+1; Readln(f,PNode^.anrede); akt := akt + Length( IntStr(PNode^.anrede) )+1; Readln(f,Pnode^.anrede_s); akt := akt + Length(PNode^.anrede_s)+1; FOR i := 1 TO 10 DO BEGIN Read(f,c); Inc(akt); PNode^.select[i] := (c = "1"); END; Readln(f); PNode^.pn.ln_succ := NIL; PNode^.pn.ln_pred := NIL; PNode^.pn.ln_Type := NT_UNKNOWN; PNode^.pn.ln_Pri := 0; b := PNode^.name+", "+PNode^.vorname; x := b; NeuePerson(PNode,x); ShowProzent(fs, akt); Inc(Anzahl); END; PROCEDURE doteil2; BEGIN WHILE NOT Eof(f) DO datensatzlesen; CloseProzentWin; t[1] := TagItem(GTLV_Labels,LONG(PList)); t[2].ti_Tag := TAG_DONE; GT_SetGadgetAttrsA(mgad[1],wp,NIL,^t); GT_RefreshWindow(wp,NIL); IF Anzahl > 0 THEN BEGIN AktuellGewählt := 0; t[1] := TagItem(GTLV_Selected, AktuellGewählt); t[2].ti_Tag := TAG_DONE; GhostGadget(mgad[M_SUCHEN],wp,FALSE); GhostGadget(mgad[M_SORTIEREN],wp,FALSE); GhostGadget(mgad[M_ÄNDERN],wp,FALSE); GhostGadget(mgad[M_BLÄTTERN],wp,FALSE); GhostGadget(mgad[M_LÖSCHEN],wp,FALSE); GhostGadget(mgad[M_SERIENDRUCK],wp,FALSE); GhostGadget(mgad[M_FORMULARDRUCK],wp,FALSE); GhostGadget(mgad[M_LISTENDRUCK],wp,FALSE); AktuellePerson := SucheNode(0); END; END; PROCEDURE DateiLaden(filer:BOOLEAN); { -- Lädt eine Datei -- } VAR s : STRING[256]; b : STRING[50]; x : STR; d : BOOLEAN; PROCEDURE Laden(VAR datei:String256); VAR j :CHAR; BEGIN Reset(f,datei); IF IOResult = 0 THEN BEGIN Readln(f,erkenn); IF (erkenn=kennung) THEN BEGIN d := OpenProzentWin("Lade Datei...."); fs := FileSize(f) - Length(erkenn); akt := 0; IF Anzahl > 0 THEN BEGIN PNode := p_Person(PList^.lh_head); WHILE PNode<>NIL DO BEGIN FreeVec(PTR(PNode^.pn.ln_Name)); Remove(p_Node(PNode)); Dispose(PNode); PNode := p_Person(PNode^.pn.ln_Succ); END; END; NeuePList; Anzahl := 0; doteil2; END ELSE DisplayBeep(NIL); Close(f); END; END; BEGIN IF filer THEN BEGIN ok:=AddPart(pfad,datei,200); datei:=filepart(pfad); delete(pfad,pos(datei,pfad),length(datei)); dummy := FileReqPattern("Datei laden",datei,pfad,"~(#?.info)"); IF dummy THEN BEGIN s := pfad+datei; Laden(s); END; END ELSE BEGIN { IF (pfad<>'') AND (pfad[length(pfad)]<>'/') AND (pfad[length(pfad)]<>':') THEN pfad:=pfad+'/' s := pfad+datei;} s:=pfad; ok:=AddPart({pfad}s,datei,200); {Das selbe mit der dos.lib klappt aber nur mit OS39 richtig} { s:=pfad;} Laden(s); END; END; PROCEDURE anhaengen; VAR s : STRING[256]; b : STRING[50]; x : STR; d : BOOLEAN; BEGIN ok:=AddPart(pfad,datei,200); datei:=filepart(pfad); delete(pfad,pos(datei,pfad),length(datei)); dummy := FileReqPattern("Datensätze anhängen",datei,pfad,"~(#?.info)"); IF dummy THEN BEGIN s := pfad+datei; IF Anzahl > 0 THEN BEGIN reset(f,s); IF IORESULT=0 THEN BEGIN read(f,erkenn); IF erkenn=kennung THEN BEGIN d:=OpenProzentwin("Lade Datei ... "); fs:=Filesize(f)-length(erkenn)-1; akt:=0; WHILE NOT eof(f) DO datensatzlesen; doteil2; END ELSE displaybeep(NIL); {kennung stimmt nicht} END ELSE displaybeep(NIL); {Datei nicht gefunden} END ELSE Dateiladen(FALSE); END; END; PROCEDURE iconspeichern(s:STRING256); VAR dobj : p_DiskObject; success : boolean; meld : STRING200; BEGIN meld:=iconname+'.info' IF NOT dateivorhanden(meld) THEN BEGIN meld:='FEHLER !'+CHR(10)+'Kann Icondatei '+iconname+'.info nicht finden'+chr(10)+ 'Bitte Tooltype ICON ändern oder die Anleitung lesen'+chr(10)+ 'Keine Panik, Adressen werden trotzdem gespeichert ;-)'; umeld(meld); END ELSE BEGIN dobj:=NIL; dobj:=GetDiskObject(iconname); { Icon des Programms holen } IF dobj<>NIL THEN BEGIN dobj^.do_defaulttool:=eigenName; { DefaultToolzeiger auf Addipro umbiegen} success:=PutDiskObject(^s,dobj); { wenn success=true Icon gespeichert} FreeDiskObject(dobj); { Speicher freigeben } END; END; END; PROCEDURE DateiSpeichern(filereq:BOOLEAN); { Adressen in eine Datei speichern... } VAR s : STRING256; PROCEDURE schreibedatensatz; BEGIN Writeln(f,PNode^.name); Writeln(f,PNode^.vorname); Writeln(f,PNode^.strasse); Writeln(f,PNode^.plz); Writeln(f,PNode^.ort); Writeln(f,PNode^.tel); Writeln(f,PNode^.fax); Writeln(f,PNode^.geb); Writeln(f,PNode^.EMail1); Writeln(f,PNode^.EMail2); Writeln(f,PNode^.kommentar); Writeln(f,PNode^.anrede); Writeln(f,PNode^.anrede_s); FOR i := 1 TO 10 DO BEGIN IF PNode^.select[i] THEN Write(f,"1") ELSE Write(f,"0"); END; Writeln(f); END; PROCEDURE Speichern(VAR s:STRING256); {alle Datensätze speichern (standard)} BEGIN ReWrite(f,s); IF IOResult = 0 THEN BEGIN { AddiPro-Kennung schreiben } Writeln(f,kennung); PNode := p_Person(PList^.lh_head); WHILE PNode^.pn.ln_succ<>NIL DO BEGIN schreibedatensatz; PNode := p_Person(PNode^.pn.ln_succ); END; Close(f); END; END; PROCEDURE s0(VAR s:STRING256); { aktuellen Datensatz speichern } BEGIN ReWrite(f,s); IF IOResult = 0 THEN BEGIN pnode:=aktuelleperson; Writeln(f,kennung); schreibedatensatz; Close(f); END; END; PROCEDURE sx(VAR s:STRING256); BEGIN ReWrite(f,s); IF IOResult = 0 THEN BEGIN { Selectionsmenge x speichern } pnode:=p_person(Plist^.lh_head); dec(j); writeln(f,kennung); IF pnode<>NIL THEN IF pnode^.select[j] THEN schreibedatensatz; WHILE pnode^.pn.ln_succ^.ln_succ<>NIL DO BEGIN pnode:=p_Person(pnode^.pn.ln_succ); IF pnode^.select[j] THEN schreibedatensatz; END; close(f); END; END; BEGIN { Sind überhaupt Adressen vorhanden? } IF Anzahl > 0 THEN BEGIN ok:=AddPart(pfad,datei,200); { sehr trickreich B-) } datei:=filepart(pfad); delete(pfad,pos(datei,pfad),length(datei)); IF filereq THEN BEGIN IF speichernalsoberfläche THEN BEGIN { Filerequester aufrufen } dummy := FileReqPattern("Datensätze speichern",datei,pfad,"~(#?.info)"); IF dummy THEN BEGIN s := pfad+datei; CASE j OF 0:s0(s); 1:Speichern(s) ELSE sx(s) END; IF iconsave THEN iconspeichern(s); END; END; END ELSE BEGIN s:=pfad+datei; IF s<>"" THEN BEGIN Speichern(s); IF iconsave THEN iconspeichern(s); END ELSE BEGIN dummy := FileReqPattern("Datensätze speichern",datei,pfad,"~(#?.info)"); IF dummy THEN BEGIN s := pfad + datei; Speichern(s); IF iconsave THEN iconspeichern(s); END; END; END; END; END; {$endif}