![]() |
zeilenumbruch in text-file löschen
Moin,
hab grad ein kleines problem (abgesehen davon daß ich ein blutiger delpi2005-laie bin und erst seit einigen monaten wieder begonnen habe, ein wenig just for fun zu programmieren...): für ein kleines simples programm benötige ich ein textfile. Die Rohdaten dazu sozusagen sind DNA-Sequenzen, die mit Zeilenumbruch in Datenbanken im Internet zu finden sind. Um innerhalb dieser DNA-Sequenz etwas zu suchen, stört mich dieser Zeilenumbruch, weshalb ich mit Hilfe eines Word-Makros die Zeilenumbrüche alle lösche und dann diese große große Zeile, die dabei entsteht, in eine .txt-Datei speichere, mit der ich dann im Programm arbeite. Jetzt meine Frage: (Wie) kann ich in einer Textdatei direkt in Delphi die Zeilenumbrüche am Ende jeder Zeile löschen? PS. für Interessierte kann ich auch gerne etwas mehr zu dem Programm sagen, aber ich wollte jetzt gleich bei meiner ersten Frage mit allzu vielen Nebensächlichkeiten nerven :-) Grüße armin |
Re: zeilenumbruch in text-file löschen
Hallo,
versuch es mal mit der Funktion "StringReplace". Als Suchstring verwendest du "\n" und ersetzen tust du es durch "" (leer) oder ein Freizeichen - je nach Bedarf. Möglich ist auch die Suche nach "\n" via der Funktion "POS", um die genaue Position herauszufinden und dies via "DELETE" aus dem Text zu löschen... Viele Wege führen nach Rom. Grüße. |
Re: zeilenumbruch in text-file löschen
Zitat:
Danke schon mal für deine fixe antwort, werd das nachher mal ausprobieren... |
Re: zeilenumbruch in text-file löschen
StringReplace ist meiner Erfahrung nach für größere Datenmengen viel zu langsam, aber versuchen kannst Du es ja mal.
"\n" geht in Delphi natürlich nicht. Jetzt kommt es aber erst einmal darauf an, wie der Zeilenumbruch in den Dateien definiert ist. Einfach mal (fürs erste) StringReplace mit #13#10 bzw. #10 als zu Suchenden String testen. ...:cat:... |
Re: zeilenumbruch in text-file löschen
Hi,
Ich würde die Datei in eine StringList laden und dann StringReplace benutzen:
Delphi-Quellcode:
Wegen der Geschwindigkeit: Mache ähnliches mit Dateien bis 5 MB Größe und die Geschwindigkeit ist OK.
Var Source: TStringList;
[...] Source := TStringList.Create; Source.LoadFromFile ('c:\datei.txt'); Source.Text := StringReplace (Source.Text, #13#10, '', [rfReplaceAll]); Source.SaveToFile; Gruß Hollie |
Re: zeilenumbruch in text-file löschen
Erst mal herzlich willkommen in der Delphi-Praxis an alle Neu-Poster. Gilt aber auch für Sakura. :lol: Ja, viele Wege führen nach Rom. Hier noch einer : zeilenweise lesen und Zeilen aneinanderhängen.
Delphi-Quellcode:
[edit=Luckie]Und an den alten Poster, der anscheinend noch keine Delphi-Tags kennt. ;) Mfg, Luckie[/edit]
var t : textfile;
zeile, gesamt : string; begin ...// Datei öffnen gesamt := ''; readln (t,zeile); gesamt := gesamt + zeile; ...// wegschreiben und Datei schliessen end. |
Re: zeilenumbruch in text-file löschen
EDIT:
Wurde bereits alles erwähnt. Sorry an die Moderatoren... Hab ich zu spät bemerkt. |
Re: zeilenumbruch in text-file löschen
@Hansa: War schon ein guter Anfang ;) aber ich würde an deiner Stelle auch noch speicherschonend speichern. Wenn du das, was du da machst, bei einer 2,01-GB-Textdatei (:shock: ;)) versuchst, wird es aus RAM-Mangel unter einem 32-Bit-System, d.h. mindestens bis Delphi2007/WinVista/64bit Prozessor/4GBRAM nicht klappen ;)
Delphi-Quellcode:
procedure entfernezeilenumbrueche(filename:string);
var f,t:textfile; zeile:string; begin assignfile(f,filename); reset(f); assignfile(t,filename+'.tmp'); rewrite(t); while not eof(f) do begin readln(f,zeile); write(t,zeile+' '); end; closefile(f); closefile(t); end; |
Re: zeilenumbruch in text-file löschen
sodele,
ich sag mal allen danke. werde dann mal mein glück versuchen :wink: |
Re: zeilenumbruch in text-file löschen
Code:
aargh... ich krieg die krätze... jetzt kackt mir das programm andauernd ab.
var
f1, t1 : text; zeile : string; begin writeln ('Bitte speichern Sie die komplette cDNA-Sequenz in d:\armin\cNDA.txt'); writeln ('Bitte Datei wieder schliessen und mit RETURN bestaetigen!'); readln; writeln; assign (f1,'d:\armin\codeX\cDNA.txt'); reset (f1); assign (t1,'d:\armin\codeX\cDNA_tmp.txt'); reset (t1); while not eof(f1) do begin readln (f1,zeile); write(t1,zeile); end; read (t1, cDNAgesamt); close (f1); close (t1); end; Problem: ich will den kompletten text aus t1 in den string cDNAgesamt kopieren. Macht man ja mit
Code:
sag ich allerdings
read(t1,cDNAgesamt);
Code:
kackt mir nix ab, was mir aber nicht weiterhilft, da ich ja in f1 die textdatei MIT zeilenumbruch habe...
read(f1,cDNAgesamt);
kann mir mal jemand sagen auf welchem schlauch ich sitze? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 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