![]() |
Datensatz aus einer Typisierten Datei löschen
Hya,
hab zur zeit das prob das ich keinen bestimmten datensatz aus meiner Typisierten datei löschen kann. Theoretisch müßte es so
Code:
gehn läuft aber net. da macht er garnix.
i:=1;
while not eof(pf) do begin Read(pf, buffer[i]); i := i+1; end; delete := StrToInt(Label9.Caption); for i := delete-1 to filesize(pf) do begin buffer[i] := buffer[i+1]; end; truncate(pf); obwohl er was machn müßte dadurch das der zu löschenende DS vom i+1sten überschrieben wird und alles rückt nach und das ende wird abgeschnippelt. Kann mir mal jemand helfen? bei meinem TP programm lief es so in etwa [edit=MrSpock]Verschoben[/edit] |
Hallo Master_BB,
du überschreibst ja nur den Puffer im Speicher! Du musst an die Stelle gehen, ab der du überschreiben willst und dann mit:
Delphi-Quellcode:
die Daten in die Datei schreiben. Das Ganze natürlich in einer Schleife.
write(pf, buffer[i+1]);
|
ich kriegs nicht hin kann mir nicht mal jemand
den fertigen löschen code hinschreiben? |
so habs jetzt selber gelöst
und nach 2 stunden hirnzermatern hatt ichs, fals es nochjemand benötigt hier der code zur erklärung z ist ein array des Datensatz Records Label3 ist der gerade angezeigte datensatz 1,2 oder so jo der rest ist klar
Delphi-Quellcode:
[edit=MrSpock]Center Tag durch Code Tags ersetzt.[/edit]
seek(f,0);
for i:=1 to filesize(f) do begin read(f,z[i]); end; delete := StrToInt(Label3.Caption); seek(f,0); e := 0; for i := 1 to delete-1 do //vor löschen ds add begin Write(f,z[i]); e := e+1; end; seek(f,e); for i := delete+1 to filesize(f) do //nach löschen ds add begin Write(f,z[i]); end; seek(f,filesize(f)-1); truncate(f); //dateiende abschnippeln |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz