Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi zeilenumbruch in text-file löschen (https://www.delphipraxis.net/65845-zeilenumbruch-text-file-loeschen.html)

ArminF 21. Mär 2006 12:12


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

moonwhaler 21. Mär 2006 12:18

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.

ArminF 21. Mär 2006 12:21

Re: zeilenumbruch in text-file löschen
 
Zitat:

Zitat von moonwhaler
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.

steht dieses "\n" für einen Zeilenumbruch oder wie kommt es zu diesem Ausdruck?

Danke schon mal für deine fixe antwort, werd das nachher mal ausprobieren...

sakura 21. Mär 2006 12:23

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:...

holliesoft 21. Mär 2006 12:25

Re: zeilenumbruch in text-file löschen
 
Hi,

Ich würde die Datei in eine StringList laden und dann StringReplace benutzen:

Delphi-Quellcode:
Var Source: TStringList;
[...]
Source := TStringList.Create;
Source.LoadFromFile ('c:\datei.txt');
Source.Text := StringReplace (Source.Text, #13#10, '', [rfReplaceAll]);
Source.SaveToFile;
Wegen der Geschwindigkeit: Mache ähnliches mit Dateien bis 5 MB Größe und die Geschwindigkeit ist OK.


Gruß
Hollie

Hansa 21. Mär 2006 12:31

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:
var t : textfile;
    zeile,
    gesamt : string;
begin  
...// Datei öffnen
  gesamt := '';
  readln (t,zeile);
  gesamt := gesamt + zeile;
...// wegschreiben und Datei schliessen
end.
[edit=Luckie]Und an den alten Poster, der anscheinend noch keine Delphi-Tags kennt. ;) Mfg, Luckie[/edit]

moonwhaler 21. Mär 2006 13:07

Re: zeilenumbruch in text-file löschen
 
EDIT:
Wurde bereits alles erwähnt. Sorry an die Moderatoren... Hab ich zu spät bemerkt.

ichbins 21. Mär 2006 13:27

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;

ArminF 21. Mär 2006 14:26

Re: zeilenumbruch in text-file löschen
 
sodele,

ich sag mal allen danke. werde dann mal mein glück versuchen :wink:

ArminF 21. Mär 2006 16:07

Re: zeilenumbruch in text-file löschen
 
Code:
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;
aargh... ich krieg die krätze... jetzt kackt mir das programm andauernd ab.

Problem: ich will den kompletten text aus t1 in den string cDNAgesamt kopieren. Macht man ja mit

Code:
read(t1,cDNAgesamt);
sag ich allerdings

Code:
read(f1,cDNAgesamt);
kackt mir nix ab, was mir aber nicht weiterhilft, da ich ja in f1 die textdatei MIT zeilenumbruch habe...

kann mir mal jemand sagen auf welchem schlauch ich sitze?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz