Hallo Leute,
Ich versuche gerade in einer Datei eine bestimmte Zeile zu löschen.
Das funktioniert auch ganz gut, ich habe es mit ein bisschen herumprobieren
geschafft, aber so ganz zufrieden bin ich mit dem Ergebnis nicht.
- Einmal Datei Öffnen , auslesen ( mit Schleife Linien auslesen )
- zwischendrin eine Temporäre Datei erstellen & in diese alle gelesenen Linien schreiben
- Mit einer Abfrage verhinderst du das Linien geschrieben werden die nicht benötigt werden
- Danach löscht du die alte Datei & benennst die alte um
Das hier habe ich versucht durchzusetzen, jedoch gelang es mir nicht die Datei
umzubenennnen.
Ich habe mir meine eigene Funktion geschrieben, wobei
die wahrscheinlich sehr viel ressourcen verbraucht.
Geht das nicht einfacher?
Hier der stock:
stock fdeleteline(Name[],Line[])
{
new File:datei=fopen(Name,io_read);
new File:datei2=fopen("tmp.txt",io_append);
new string[50];
while(fread(datei,string)) if(strfind(string,Line,true)==-1) fwrite(datei2,string);
fclose(datei);
fclose(datei2);
datei=fopen(Name,io_write);
datei2=fopen("tmp.txt",io_read);
while(fread(datei2,string)) fwrite(datei,string);
fclose(datei2);
fclose(datei);
fremove("tmp.txt");
return 1;
}
{
new File:datei=fopen(Name,io_read);
new File:datei2=fopen("tmp.txt",io_append);
new string[50];
while(fread(datei,string)) if(strfind(string,Line,true)==-1) fwrite(datei2,string);
fclose(datei);
fclose(datei2);
datei=fopen(Name,io_write);
datei2=fopen("tmp.txt",io_read);
while(fread(datei2,string)) fwrite(datei,string);
fclose(datei2);
fclose(datei);
fremove("tmp.txt");
return 1;
}
LG
Pille