Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konsolenausgabe Umleitung Zeilenumbuch Problem (https://www.delphipraxis.net/54981-konsolenausgabe-umleitung-zeilenumbuch-problem.html)

MarLe 14. Okt 2005 13:21


Konsolenausgabe Umleitung Zeilenumbuch Problem
 
Ich verwende folgenden Tipp um die Ausgaben einer Funktion im DOS-Fenster ins eigene Programm zu übernehmen.
Link
Um auch Umlaute, Sonderzeichen usw. richtig anzuzeigen habe ich zusätzlich eine ASCI-ANSI Konvertierung
der Funktion hinzugefügt.
Delphi-Quellcode:
OemToCharBuff(Stream.Memory, Stream.Memory, Stream.Size);
Soweit funktioniert alles wie gewünscht.

Ein Problem habe ich jetzt mit der Umleitung von z.B. ipconfig /all
Angezeigt werden jetzt zusätzliche Leerzeilen (Memo).
Manche Befehle geben anscheinend im DOS-Fenster für einen Carrige Return mit Line Feed
Hex 0D 0D 0A anstatt 0D 0A aus. Notepad ignoriert's "bessere" Editoren meckern das Format an
und konvertieren nach Rückfrage ins DOS-Format.

Gibt's im Delphi eine entsprechende Funktion, oder muss ich dass manuell korrigieren???

Flocke 14. Okt 2005 13:27

Re: Konsolenausgabe Umleitung Zeilenumbuch Problem
 
Nimm Delphi-Referenz durchsuchenAdjustLineBreaks - bei CR/CR/LF musst du's ggf. zwei Mal aufrufen...

himitsu 14. Okt 2005 13:53

Re: Konsolenausgabe Umleitung Zeilenumbuch Problem
 
AdjustLineBreaks sollte aus CR/CR/LF ein CR/LF/CR/LF machen. :gruebel:
Und zweimaliges Aufrufen wird daran wohl nichts ändern?

Bei CR/CR/LF nach CR/LF wird wohl nur ein StringReplace hilfreich sein :)

Flocke 14. Okt 2005 15:17

Re: Konsolenausgabe Umleitung Zeilenumbuch Problem
 
Auszug aus der Online-Hilfe:
Zitat:

Zitat von OH
Passt Zeilenumbruchzeichen an den Windows- oder Linux-Stil an.

Unit
SysUtils

Syntax
[ Delphi ] function AdjustLineBreaks(const S: string, Style: TTextLineBreakStyle): string;

Beschreibung
AdjustLineBreaks gibt einen String mit angepassten Zeilenumbrüchen zurück.
S ist der String, der konvertiert werden soll.

Style gibt an, ob Zeilenumbrüche im Windows-Stil mit Wagenrücklauf und Zeilenvorschub (tlbsCRLF) oder im Linux-Stil mit einem einzelnen Zeilenvorschubzeichen (tlbsLF) vorgenommen werden. Wird dieser Parameter nicht angegeben, werden automatisch die Zeilenumbrüche des Compilierziels verwendet.

Man muss also nur beim Aufruf Style mit tlbsLF angeben (und danach ggf. noch einen Durchlauf mit tlbsCRLF).

Aber du hast Recht: StringReplace(#13#13, #13, ...) sollte reichen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 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