Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Download einer txt Datei. Fehlende Zeilenumbrüche. (https://www.delphipraxis.net/159135-download-einer-txt-datei-fehlende-zeilenumbrueche.html)

noname2010 15. Mär 2011 20:26

Delphi-Version: XE

Download einer txt Datei. Fehlende Zeilenumbrüche.
 
Hallo,
ich habe ein Problem mit dem Download einer Textdatei von einem Server.

Der Download wird über TIdHTTP in Delphi XE realisiert.

Delphi-Quellcode:
...
form1.idhttp1.Get('http://www.abc.de/def/gh.txt',stream2);
...
Der Download funktioniert auch, nur sind in der runtergeladen Textdatei sämtliche Zeilenumbrüche entfernt. Der gesamte Inhalt wird in die erste Zeile geschrieben, was zur Weiterverarbeitung sehr schlecht ist.

Seltsam ist auch, das das Problem nur auf meinem Laptop (per Wlan, spielt das eine Rolle?) auftritt. Nicht aber auf dem Desktop PC, an dem ich meistens arbeite.

Hat jemand eine Idee, woran das liegen könnte?

Bernhard Geyer 15. Mär 2011 21:27

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
Bist du sicher das alle Zeilenumbrüche weg sind und nicht nur die Unix-Version (CR statt CR+LF) bzw. MacOS (LF) vorliegt?

himitsu 15. Mär 2011 23:51

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
TidHttp sollte keine Zeilenumbrüche ändern,
wenn, dann verschwindet sowas gent beim FTP-up/download im Textmodus ... dort wird dieses auf Linuxservern nach #10 geändert, da dieses den Standardzeilenumbruch für Linux darstellt.

DeddyH 16. Mär 2011 08:27

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
Schlimmstenfalls kann man es so versuchen:
Delphi-Quellcode:
s := StringReplace(s, sLineBreak, #10, [rfReplaceAll]);
s := StringReplace(s, #10, sLineBreak, [rfReplaceAll]);

p80286 16. Mär 2011 09:37

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
Hast Du es mal mit einem Hex-Editor versucht?
Dann weiß man was in der Datei steht und muß nicht spekulieren.

Gruß
K-h

himitsu 16. Mär 2011 09:50

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
Zitat:

Schlimmstenfalls kann man es so versuchen:
Einfach in eine TStringList einlesen ... diese kommt auch mit Linux (#10), eventuell sogar Mac (#13) und natürlich Windows (#13#10) zurecht
und nutzt beim Speichern dann standardmäßig die Windowsvariante (#13#10).

noname2010 16. Mär 2011 17:37

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
Hallo,

danke schon mal für die vielen Antworten.

Die Textdatei wird in meinem Programm tatsächlich zeilenweise in einer TStringlist verarbeitet. In der StringList ist, wenn das Problem auftritt, immer nur ein Eintrag.

Ich habe die Textdatei, wie empfohlen, mal in einem Hex-Editor geöffnet: An den Stellen wo Zeilenumbrüche sein sollten, befindet sich ein 0A. Soweit ich das googeln konnte, handelt es sich bei dem 0A um die Unix-Variante des Zeilenumbruchs, oder? Wäre ja ansich korrekt. (Der Server ist meines Wissens ein Unix System)

Wenn ich die Textdatei manuell im Browser aufrufe, werden die Zeilenumbrüche korrekt dargestellt.

Warum also erkennt die TStringlist das 0A nicht als Zeilenumbruch?


Ergänzung:
Das Herunterladen der Datei und das Laden in die TStringList findet nicht im Haupt-Threat des Programms statt, sondern in einem eigenen Threat.

DeddyH 16. Mär 2011 17:39

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
0A (oder #10 in Delphi) ist der Unix-Zeilenumbruch, der von Windows ist 0D0A (#13#10).

noname2010 16. Mär 2011 18:49

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
Zitat:

Zitat von DeddyH (Beitrag 1089075)
0A (oder #10 in Delphi) ist der Unix-Zeilenumbruch, der von Windows ist 0D0A (#13#10).

Ok, also ich denke, dass der Fehler nicht in der Textdatei liegt. Da scheint soweit alles richtig zu sein.
Hatte ja auch schon jemand geschrieben, dass die Stringlist mit Unix-Zeichenumbrüchen umgehen kann.

Vermute der Fehler liegt irgendwo im Funktionsaufruf des Treads...

Vielen Dank für die Hilfe!

roga 24. Mär 2011 15:22

AW: Download einer txt Datei. Fehlende Zeilenumbrüche.
 
Wie himitsu bereits schrieb, erfolgt der Download einer Textdatei über TidHTTP in einer StringList vollständig und mit allen Zeilenumbrüchen. Auch die weitere Verarbeitung des Textes klappt nach folgendem Code wunderbar.

Delphi-Quellcode:
var
  UC_Strings: TStrings;
  ...
begin
  UC_Strings := TStringList.Create;
  try

    UC_Strings.Text := idHTTP1.Get('http://www.abc.de/def/gh.txt');

    ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.

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