AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schreiben von Textdatei / TMemoryStream

Ein Thema von holger_barntrup · begonnen am 19. Jun 2019 · letzter Beitrag vom 20. Jun 2019
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von holger_barntrup
holger_barntrup

Registriert seit: 1. Feb 2007
Ort: Barntrup
97 Beiträge
 
Delphi 10.4 Sydney
 
#1

Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 10:22
Delphi-Version: XE7
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:
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;
Ist das von der Syntax so korrekt oder fehlt da etwas wichtiges?
Ich hab das Projekt von einem Kollegen geerbt den ich leider nicht mehr fragen kann.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#2

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 10:32
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 ...
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.463 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 10:43
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.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von holger_barntrup
holger_barntrup

Registriert seit: 1. Feb 2007
Ort: Barntrup
97 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 10:49

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.
Ein guter Ansatz, ich schau mir das sofort mal an ob es da Unterschiede gibt.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 10:50
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.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von ergeka
ergeka

Registriert seit: 5. Mär 2010
Ort: Karlsruhe
30 Beiträge
 
Delphi 12 Athens
 
#6

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 10:52
Evtl. hilft die Eigenschaft TRichEdit.PlainText weiter.
  Mit Zitat antworten Zitat
Benutzerbild von holger_barntrup
holger_barntrup

Registriert seit: 1. Feb 2007
Ort: Barntrup
97 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 12:16
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.
  Mit Zitat antworten Zitat
Benutzerbild von holger_barntrup
holger_barntrup

Registriert seit: 1. Feb 2007
Ort: Barntrup
97 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 12:19
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.
Ich hab es geerbt, kann mich aber noch ganz schwach erinnern das es zu beginn mal ein Memo war was dann aber, aus mir nicht mehr bekannten Gründen, in das RichEdit geändert wurde.
Nee RTF Text wird nicht übertragen. Die Steuerung würde sich freuen.
  Mit Zitat antworten Zitat
Benutzerbild von holger_barntrup
holger_barntrup

Registriert seit: 1. Feb 2007
Ort: Barntrup
97 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 12:34
Evtl. hilft die Eigenschaft TRichEdit.PlainText weiter.
Danke, ich probiere das mal.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.463 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Schreiben von Textdatei / TMemoryStream

  Alt 19. Jun 2019, 12:35
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.
Ich hab es geerbt, kann mich aber noch ganz schwach erinnern das es zu beginn mal ein Memo war was dann aber, aus mir nicht mehr bekannten Gründen, in das RichEdit geändert wurde.
Nee RTF Text wird nicht übertragen. Die Steuerung würde sich freuen.
Und was ist mit Unicode-Text? Bei XE7 ist der Standard-String ein UnicodeString, also auch TRichEdit.Lines.Text. Das könnte auch eine Menge Spaß bedeuten. Wobei ich zugeben muss, dass ich nicht weiß, was
RichEdit1.Lines.SaveToStream(Stream); genau macht. Vielleicht schreibt es ja AnsiStrings.
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 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