AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein MEMO als FILE speichern mit LF anstatt CRLF
Thema durchsuchen
Ansicht
Themen-Optionen

MEMO als FILE speichern mit LF anstatt CRLF

Offene Frage von "Klaus01"
Ein Thema von wschrabi · begonnen am 25. Nov 2016 · letzter Beitrag vom 26. Nov 2016
Antwort Antwort
wschrabi

Registriert seit: 16. Jan 2005
456 Beiträge
 
#1

MEMO als FILE speichern mit LF anstatt CRLF

  Alt 25. Nov 2016, 21:47
Hi
Ich habe eine MEMO mit einigen Lines hardcoded im Form.
NUn möchte ich es per sftp an UNIX übertragen. Dazu möchte ich das MEMO mit linebreaks = #10 speichern.
Ich habe auch memoscript.linebreaks = #10 definiert. Doch er speichert immer noch mit CRLF.
Wieso?
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#2

AW: MEMO als FILE speichern mit LF anstatt CRLF

  Alt 25. Nov 2016, 22:45
Demo:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
for i := 0 to 19 do Memo1.Lines.Add(INTTOSTR(i));
end;

procedure TForm1.Button2Click(Sender: TObject);
var newStr : String;
begin
 Label1.Caption:= Memo1.Text;
 newStr:= Label1.Caption;
 newStr := StringReplace(newStr,#$A,'',[rfReplaceAll]); // entweder
// newStr := StringReplace(newStr,#$D,'',[rfReplaceAll]); // oder
 Label2.Caption:= newStr;
 Application.ProcessMessages;
 Memo2.Text:= Label2.Caption;
 Application.ProcessMessages;
 Memo2.Lines.SaveToFile('F:\Memo2.txt');
end;
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: MEMO als FILE speichern mit LF anstatt CRLF

  Alt 25. Nov 2016, 22:51
Hallo,

welches Memo benutzt Du denn?
TMemo hat meines Wissen kein Property namens LineBreak.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#4

AW: MEMO als FILE speichern mit LF anstatt CRLF

  Alt 26. Nov 2016, 03:14
Zitat:
Memo1.Lines.LineBreak
Doch, hat es.

ABER, im TMemoStrings ist es nur "halb" implementiert.
TStrings.GetTextStr beachtet zwar dieses Property, aber TMemoStrings.GetTextStr überschteibt das und dort wird so gut optimiert, dass "direkt" Memo.Text rausgegeben wird, wo das nicht mehr Beachtung findet.

StringReplace anwenden oder in eine andere TStringList umkopieren.
PS: Delphi-Referenz durchsuchenAdjustLineBreaks
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Nov 2016 um 03:18 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
978 Beiträge
 
Delphi 6 Professional
 
#5

AW: MEMO als FILE speichern mit LF anstatt CRLF

  Alt 26. Nov 2016, 08:07
Hmm..

oder OldStyle...


Delphi-Quellcode:
procedure SaveStringsLF(AStrings : TStrings; AFileName : string);
var
  fs : TFileStream;
  i : integer;
  s : string;
begin
  fs := TFileStream.Create(AFileName,fmCreate);
  try
    for i := 0 to AStrings.Count-1 do begin
      s := AStrings[i] + #10;
      fs.Write(s[1],length(s) * SizeOf(Char));
    end;
  finally
    fs.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveStringsLF(Memo1.Lines, 'F:\Memo2.txt');
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#6

AW: MEMO als FILE speichern mit LF anstatt CRLF

  Alt 26. Nov 2016, 12:50
Und gerade sowas sollte man NIEMALS achen.
Denn diese Datei sieht dann anders aus, wenn man die Anweendung in verschiedenen Delphis kompiliert und das ohne jegliche Format-/Versionsinformationen in der Datei. (Unicode oder nicht)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
978 Beiträge
 
Delphi 6 Professional
 
#7

AW: MEMO als FILE speichern mit LF anstatt CRLF

  Alt 26. Nov 2016, 14:13
Und gerade sowas sollte man NIEMALS achen.
Denn diese Datei sieht dann anders aus, wenn man die Anweendung in verschiedenen Delphis kompiliert und das ohne jegliche Format-/Versionsinformationen in der Datei. (Unicode oder nicht)
OK, dann erkläre mir dochmal was dann 'Gleich' bei Memo2.Lines.SaveToFile('F:\Memo2.txt') unter Delphi6 (ANSI) und DelphiX (Unicode) ist?

Auch da wird KEINE Versionsinfo mitgespeichert, sondern nur der reine Textinhalt des MEMOs!
Auch da wird beim einen ein ANSI-Text erstellt und beim Anderen (eventuell) ein Unicode-Text!

Also, was ist an Memo2.Lines.SaveToFile besser?

Die Funktion von mir lässt sich problemlos um einen BOOM ergänzen, damit eine Unterscheidung von ANSI und UniCode möglich ist.
Auch könnte mann statt eine 'String' auch 'AnsiString' verwenden, welches für die meisten UNIX-Texte ausreichen würde..
(Dann allerdings das '* SizeOf(Char)' auskommentieren.

Da wir nicht wissen welches Format der Text haben müsste, können wir nur raten, ob UniCode/ANSI/mit oder ohne Boom benötigt wird..

Der TE wollte nur wissen, wie er ein Memo statt mit CR/LF nur mit LF speichert. Und genau dass mach die Funktion!
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:36 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