Entwickler-Ecke
Sonstiges (Delphi) - Leerzeilen aus Datei entfernen
Marco D. - Do 23.11.06 18:58
Titel: Leerzeilen aus Datei entfernen
Mein FTP-Client muss irgendwie in mein PHP-Projekt Leerzeilen eingebaut haben. Auf jeden Fall sind einige Dateien total unübersichtlich geworden, diese Leerzeilen sollen wieder weg. Am liebsten hätte ich ein Delphi-Programm, dass ich drüberlaufen lassen könnte. Nur wie entferne Leerzeilen. Ich könnte alles in eine Stringlist einlesen und dann mit Delete arbeiten. Aber wie identifiziere ich eine Leerzeile?
Dragonclaw - Do 23.11.06 19:01
du kannst das mit ASCII Code überprüfen
der ASCII code für ein Leerzeichen ist 32.
Wenn du jetzt nen String Buchstabe für Buchstabe überprüfst kannst du mit Ord(X) den ASCII Code rausfinden
Narses - Do 23.11.06 19:04
Moin!
Marco D. hat folgendes geschrieben: |
| Ich könnte alles in eine Stringlist einlesen und dann mit Delete arbeiten. Aber wie identifiziere ich eine Leerzeile? |
Delphi-Quelltext
1: 2:
| if (Trim(SL.Strings[i]) = '') then SL.Delete(i); |
cu
Narses
Marco D. - Do 23.11.06 19:05
Dragonclaw hat folgendes geschrieben: |
du kannst das mit ASCII Code überprüfen
der ASCII code für ein Leerzeichen ist 32.
Wenn du jetzt nen String Buchstabe für Buchstabe überprüfst kannst du mit Ord(X) den ASCII Code rausfinden |
Ich meine Leer
zeilen! ;)
Kann ich nicht einfach die ganzen Stringlist durchgehen und wenn Stringlist1.Strings[i] = '' dann einfach diese Löschen?
Narses - Do 23.11.06 19:10
:nixweiss:
Marco D. - Do 23.11.06 19:15
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); var list: TStringlist; i: integer; begin if (opendialog1.execute) then begin list := TStringlist.Create; list.LoadFromFile(opendialog1.FileName); for i := 0 to list.Count - 1 do begin showmessage(list.strings[i]); if (Trim(list.strings[i]) = '') then list.delete(i); end;
end;
end; |
Irgendwie liest er nur die 1. Zeile ein und dann folgen nur Leerzeilen. :gruebel:
jakobwenzel - Do 23.11.06 19:18
Probier mal anstatt list.Strings[i] list[i].
Außerdem solltest du die Schleife rückwärts laufen lassen, da list.Count nur einmal am Anfang der Schleife abgefragt wird und wenn dann Zeilen gelöscht werden es eine Zugriffsverletzung gibt.
Marco D. - Do 23.11.06 19:25
Perfekt es klappt :zustimm:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); var list: TStringlist; i: integer; begin if (opendialog1.execute) then begin list := TStringlist.Create; list.LoadFromFile(opendialog1.FileName); showmessage(inttostr(list.count)); for i := list.count - 1 downto 0 do begin if (Trim(list[i]) = '') then list.delete(i); end; list.SaveToFile(extractfilepath(paramstr(0))+'dummy.php'); end;
end; |
Nur was ist der Unterschied zwischen list[i] und list.strings[i] ? :gruebel:
jakobwenzel - Do 23.11.06 19:38
Eigentlich sollte es das gleiche sein, aber bei mir war es schon ein paar mal so, das list.strings[i] leer war und in list[i] die korrekten Werte standen. :shock:
Marco D. - Do 23.11.06 19:41
jakobwenzel hat folgendes geschrieben: |
| Eigentlich sollte es das gleiche sein, aber bei mir war es schon ein paar mal so, das list.strings[i] leer war und in list[i] die korrekten Werte standen. :shock: |
:eyecrazy:
Narses - Do 23.11.06 20:01
Moin!
jakobwenzel hat folgendes geschrieben: |
| aber bei mir war es schon ein paar mal so, das list.strings[i] leer war und in list[i] die korrekten Werte standen. |
Das glaube ich dir schlicht nicht. ;) Das ist exakt identisch und IMHO ist es besser das Array auch anzugeben, statt auf den Default zu setzen; kann man aber auf jeden Fall besser lesen.
cu
Narses
jakobwenzel - Do 23.11.06 20:31
Ich habs jetzt mal in nem seperaten Prog getestet, da gehts. :?
Aber in einem anderen Programm hab ich immer nur leere Strings gekriegt, bis ich das .strings gelöscht hab. :shock:
Ich kanns leider nich nochmal in dem anderen Prog testen, weil der entsprechende Code inzwischen wieder rausgeflogen is.
elundril - Do 23.11.06 22:04
kleine frage: was passiert wenn in einer Zeile leerzeichen sind??
lg el
Lannes - Do 23.11.06 22:51
Hallo,
elundril hat folgendes geschrieben: |
| kleine frage: was passiert wenn in einer Zeile leerzeichen sind?? |
Gegenfrage, was macht die Funktion Trim? :roll:
Marco D. - Fr 24.11.06 12:37
Die Funktion Trim entfernt Leer- und Steuerzeichen aus einem String. ;)
elundril - Sa 25.11.06 11:07
ok danke! hab nicht genau gewusst ob trim dazu da ist.
lg el
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!