![]() |
Delphi-Version: XE7
Schreiben von Textdatei / TMemoryStream
Ich habe ein Problemchen an dem ich schon länger herum grübele.
Und zwar speichere einen Text aus einem RichEdit per IdFTP auf eine CNC -Steuerung. Das funktioniert seit Jahren ohne Probleme. In Letzter Zeit ist es vermehrt vorgekommen das nach jeder Zeile eine Leerzeile eingefügt wird. Wie auch immer das passiert. Das einzig auffällige an der Sache ist das es nur auf den neueren Rechnern mit Win7 auftritt, die alten XP Rechner betrifft das nicht. Momentan lässt sich der Fehler NICHT reproduziern. Hat vielleicht einer von euch schon mal ein ähnliches Problem gehabt oder eine Idee wo ich ansetzen kann?
Delphi-Quellcode:
Ist das von der Syntax so korrekt oder fehlt da etwas wichtiges?
procedure TForm20.Speichern1Click(Sender: TObject);
var Stream : TMemoryStream; ms : Integer; begin Stream := TMemoryStream.Create; try IdFTP1.Host :=Host; IdFtp1.Username :=Username; IdFTP1.Password :=Passwort; IdFTP1.Connect(); IdFTP1.ChangeDir(Sm800Zielverzeichnis); RichEdit1.Lines.SaveToStream(Stream); Stream.Position := 0; //Ausleseposition des Streams auf Anfang IDFTP1.Put(Stream,'kontur.cnc'); IdFTP1.Disconnect; progammstatus:=0; Speichermodus:=true; finally Stream.Free; // Stream aus dem Speicher entfernen end; end; Ich hab das Projekt von einem Kollegen geerbt den ich leider nicht mehr fragen kann. |
AW: Schreiben von Textdatei / TMemoryStream
Die Syntax hat damit erst einmal gar nichts zu tun. Wenn die falsch wäre, dann würde sich das noch kompilieren lassen oder du würdest niemals irgendeinen Text herausbekommen.
Aber: Das RichEdit-Control ist ein Wrapper für das RichEdit des Betriebssystems. Und hier könnten auch je nach Update-Status des Betriebssystems durchaus Unterschiede vorliegen. Prüfe die Werte, die du von dem RichEdit bekommst auf diese überflüssigen Leerzeichen und entferne diese oder werfe eine Exception, oder Loggen, oder ... |
AW: Schreiben von Textdatei / TMemoryStream
Wie Schokohase schon schreibt: TRichEdit könnte das Problem sein.
Warum benutzt Du das überhaupt? Täte es da nicht ein TMemo? Es geht ja sicherlich nicht darum RTF-Text auf eine CNC-Maschine zu übertragen. |
AW: Schreiben von Textdatei / TMemoryStream
Zitat:
|
AW: Schreiben von Textdatei / TMemoryStream
Warum überhaupt ein RichEdit?
Abgesehen von den Anmerkungen von Schokohase, besteht dort auch das Risiko, versehentlich Formatierungszeichen im Text zu haben. Allein ein Copy&Paste aus einem Textverarbeitungsprogramm kann da schon Chaos verursachen. Ich weiß, dass du das Programm nur übernommen hast. Aber ich würde solche Dinge dringend umstellen. |
AW: Schreiben von Textdatei / TMemoryStream
Evtl. hilft die Eigenschaft TRichEdit.PlainText weiter.
|
AW: Schreiben von Textdatei / TMemoryStream
Es wird die Riched20.dll bei beiden Betriebssystemen verwendet, die File Version ist identisch aber die Produktversion auf den XP Rechnern 3.0 und auf den Win7 Rechnern 3.1.
Wenn das wieder passiert werde ich dort wohl ansetzen. |
AW: Schreiben von Textdatei / TMemoryStream
Zitat:
Nee RTF Text wird nicht übertragen. Die Steuerung würde sich freuen. |
AW: Schreiben von Textdatei / TMemoryStream
Zitat:
|
AW: Schreiben von Textdatei / TMemoryStream
Zitat:
Delphi-Quellcode:
genau macht. Vielleicht schreibt es ja AnsiStrings.
RichEdit1.Lines.SaveToStream(Stream);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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 by Thomas Breitkreuz