Windos - ANSI
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Windos - ANSI
Hallo,
habe leider wo nirgends etwas im Netz gefunden.
Lazarus kann nicht im ANSI-Format text.txt / *.csv abspeichern.
Wie kann man das realisieren?
Windows Excel öffnet Standartmäßig im ANSI-Mode.
Man kann natürlich eine mit Lazarus UTF8 erzeugte Datei in Excel öffnen, dazu muss man jedoch erst Excel öffnen und über (Daten > Text öffnen) UTF8 zum Import einstellen.
Ändert man eine geladene Datei und speichert diese wieder als .csv ab,
so hat man wieder eine Windows Standard ANSI Datei.
Wie könnte man so etwas mit Lazarus realisieren.
Ich meine ANSI-Textbasierte Dateien(Umlaute Probleme) abspeichern und einlesen.
Wer kann hier weiterhelfen?
Gruß
habe leider wo nirgends etwas im Netz gefunden.
Lazarus kann nicht im ANSI-Format text.txt / *.csv abspeichern.
Wie kann man das realisieren?
Windows Excel öffnet Standartmäßig im ANSI-Mode.
Man kann natürlich eine mit Lazarus UTF8 erzeugte Datei in Excel öffnen, dazu muss man jedoch erst Excel öffnen und über (Daten > Text öffnen) UTF8 zum Import einstellen.
Ändert man eine geladene Datei und speichert diese wieder als .csv ab,
so hat man wieder eine Windows Standard ANSI Datei.
Wie könnte man so etwas mit Lazarus realisieren.
Ich meine ANSI-Textbasierte Dateien(Umlaute Probleme) abspeichern und einlesen.
Wer kann hier weiterhelfen?
Gruß
Re: Windos - ANSI
Du hast im anderen Beitrag geschrieben, UTF8ToAnsi ginge nicht. Warum nicht? Wie kommst du drauf? Steht das im Bugtracker?
Re: Windos - ANSI
Nein, das stimmt nicht. Lazarus lässt beim Speichern die String-Kodierung unverändert. Also wenn du die Strings vor dem Speichern nach ANSI umwandelst, werden sie auch so gespeichert. Die Umwandlung machst du z.B. mit UTF8ToWinCP().hbr hat geschrieben:Hallo,
habe leider wo nirgends etwas im Netz gefunden.
Lazarus kann nicht im ANSI-Format text.txt / *.csv abspeichern.
Code: Alles auswählen
uses LazUTF8;
procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
begin
AssignFile(F, 'd:\test.txt');
Rewrite(F);
WriteLn(F, UTF8ToWinCP('ä;ö;ü'));
CloseFile(F);
end;
Verwende nicht mehr die früher empfohlenen "UTF8ToAnsi" und "UTF8ToSys", die machen teilweise nichts, teilweise etwas anderes als man erwartet und erzeugen nur Verwirrung (zumindest auf der Windows-Plattform).
Re: Windos - ANSI
Warum? Ist das irgendwo dokumentiert?wp_xyz hat geschrieben: Verwende nicht mehr die früher empfohlenen "UTF8ToAnsi" und "UTF8ToSys", die machen teilweise nichts, teilweise etwas anderes als man erwartet und erzeugen nur Verwirrung (zumindest auf der Windows-Plattform).
-
- Beiträge: 321
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Windos - ANSI
Super Danke,
bin nicht fündig geworden bei meiner Suche, schon gar nicht,
dass es jetzt eine Unit 'LazUTF8' gibt, wo UTF8ToAnsi durch UTF8ToWinCP ersetzt wird.
Das Gegenstück WinCPToUTF8 funktioniert auch.
Gruß
bin nicht fündig geworden bei meiner Suche, schon gar nicht,
dass es jetzt eine Unit 'LazUTF8' gibt, wo UTF8ToAnsi durch UTF8ToWinCP ersetzt wird.
Das Gegenstück WinCPToUTF8 funktioniert auch.
Gruß
Re: Windos - ANSI
Das Referenzdokument http://wiki.freepascal.org/Better_Unico ... in_Lazarus ist sehr schwer verdaulich... Der Quellcode ist klarer:theo hat geschrieben:Warum? Ist das irgendwo dokumentiert?wp_xyz hat geschrieben: Verwende nicht mehr die früher empfohlenen "UTF8ToAnsi" und "UTF8ToSys", die machen teilweise nichts, teilweise etwas anderes als man erwartet und erzeugen nur Verwirrung (zumindest auf der Windows-Plattform).
Code: Alles auswählen
function SysToUTF8(const s: string): string;
begin
{$IFDEF UTF8_RTL}
Result:=s; // <-- String wird direkt durchgereicht
{$ELSE}
... ist bei mir nicht aktiv
{$ENDIF}
end;
function Utf8ToAnsi(const s : RawByteString) : RawByteString;
begin
Result:=RawByteString(Utf8Decode(s)); // <-- string wird zu einem WideString. Das ist doch nicht Ansi! --> unverständlich...
end;
Re: Windos - ANSI
Hmmm, scheint mir alles in Bearbeitung und noch nicht fertig zu sein.
Keine Ahnung und im Moment auch keine Lust, da hinterher zu laufen.
Aber dass es mit den "schlauen" Strings zum kompletten Durcheinander kommen würde, hatte ich schon vor Jahren befürchtet.
Keine Ahnung und im Moment auch keine Lust, da hinterher zu laufen.

Aber dass es mit den "schlauen" Strings zum kompletten Durcheinander kommen würde, hatte ich schon vor Jahren befürchtet.
-
- Beiträge: 22
- Registriert: Mi 3. Jun 2015, 00:22
- OS, Lazarus, FPC: Win10, Laz 1.4.2 FPC 2.6.4
- CPU-Target: 64Bit
- Wohnort: Mödling bei Wien
- Kontaktdaten:
Re: Windos - ANSI
DANKE! DANKE!wp_xyz hat geschrieben:Nein, das stimmt nicht. Lazarus lässt beim Speichern die String-Kodierung unverändert. Also wenn du die Strings vor dem Speichern nach ANSI umwandelst, werden sie auch so gespeichert. Die Umwandlung machst du z.B. mit UTF8ToWinCP().hbr hat geschrieben:Hallo,
habe leider wo nirgends etwas im Netz gefunden.
Lazarus kann nicht im ANSI-Format text.txt / *.csv abspeichern.Die hier erzeugte Datei wird problemlos und korrekt mit Excel geöffnet.Code: Alles auswählen
uses LazUTF8; procedure TForm1.Button1Click(Sender: TObject); var F: TextFile; begin AssignFile(F, 'd:\test.txt'); Rewrite(F); WriteLn(F, UTF8ToWinCP('ä;ö;ü')); CloseFile(F); end;
Verwende nicht mehr die früher empfohlenen "UTF8ToAnsi" und "UTF8ToSys", die machen teilweise nichts, teilweise etwas anderes als man erwartet und erzeugen nur Verwirrung (zumindest auf der Windows-Plattform).
das scheint wirklich die einzige Möglichkeit zu sein eine ANSI-Textdatei zu erstellen. Alle Versuche mit ...saveToFile schlugen fehl.
Danke nochmals!
Heinz
LG Heinz