| Autor |
Beitrag |
luckyluc
      
Beiträge: 103
|
Verfasst: Mi 21.10.09 20:28
hallo
ich bräuchte mal wieder eure Hilfe. Im Anhang findet ihr den entsprechenden Quelltext.
Beim Löschen-Button fkt. das Löschen immer nur in der ersten zeile nicht in den darauffolgenden. warum?
und beim button zum hinzufügen eines datensatzes passiert nichts.
danke im voraus
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von luckyluc am Do 22.10.09 19:03, insgesamt 2-mal bearbeitet
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mi 21.10.09 21:54
hier nochmal für jene die nicht extra ne datei runterladen wollen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm1.btn_loeschenClick(Sender: TObject); var i: integer; pos: integer; begin i:= 1; pos := FilePos(datei); while not eof(datei) do begin read(datei,person); seek(datei,FilePos(datei)-2); write(datei,person); read(datei,person); end; seek(datei,FilePos(datei)-1); Truncate(datei); seek(datei,pos); repeat begin StringGrid1.Cells [1,i] := Person.Vorname; StringGrid1.Cells [2,i] := Person.Nachname; inc(i); end; until eof (datei); end; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.btn_hinzufuegenClick(Sender: TObject); var i: integer; begin i:= 1; repeat Person.Vorname:= StringGrid1.Cells [1,i] ; Person.Nachname:= StringGrid1.Cells [2,i] ; WRITE(datei, person); inc (i); until eof (datei); seek(datei,FileSize(datei)); write(datei,person); end; |
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
luckyluc 
      
Beiträge: 103
|
Verfasst: Do 22.10.09 11:54
liegt das beim löschen vielleicht an der repeat-schleife? denn wenn ich z.b. until i=100 (oder so) setze, dann löscht er alles
beim hinzufügen: das write muss aus der schleife raus oder?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 23.10.09 08:15
Erstens solltest du die Dateivariable lokal deklarieren und nicht global. Dann kannst du die Datei auch an der Stelle öffnen und schließen. So wie du es jetzt hast, benutzt du beim Schreiben einfach die im Moment gesetzte Dateiposition.
Und dann schreibst du bis das Ende der Datei erreicht ist. Warum? Willst du nicht eher solange schreiben wie Datensätze vorhanden sind und das vom Start der Datei aus?
Zudem schreibst du person am Ende doppelt, denn nach der letzten Zuweisung in der Schleife wird dort bereits geschrieben und dann schreibst du danach noch einmal denselben Datensatz.
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 23.10.09 15:28
Moin!
Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
| 1.2 Beiträge: | | Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...] |
Einfach oben bei Deinem ersten Beitrag auf  oder  klicken und den Titel ändern. Danke Dir!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Fr 23.10.09 16:07
Bei dem Threadtitel dachte ich schon ich wäre auf der Seite von 9Live gelandet. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
|