Entwickler-Ecke
Sonstiges (Delphi) - wo liegt der fehler?
luckyluc - Mi 21.10.09 20:28
Titel: wo liegt der fehler?
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
elundril - 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; |
luckyluc - 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 - 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 - 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 [
http://www.entwickler-ecke.de/richtlinien.html]:
| 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
Dude566 - Fr 23.10.09 16:07
Bei dem Threadtitel dachte ich schon ich wäre auf der Seite von 9Live gelandet. :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!