Von wegen UTF-8 ist die Quelle allen Übels...

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mschnell »

./.
Zuletzt geändert von mschnell am So 17. Jan 2010, 23:07, insgesamt 1-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mschnell »

theo hat geschrieben:Wieso kann der FPC die Lazarus Quellen nicht als UTF-8 behandeln?
Was machst Du denn, wenn Du ein 1 Mio Zeilen- Delphi- oder Lazarus-Programm von vor ein paar Monaten Monaten, als die Compiler noch gar kein Unicode kannten hast und das mit dem neuen FPC übersetzen willst ? Die quellen sind halt nicht Unicode-Codiert. Vielleicht muss man sie dann mit irgendeiner anderen Software erst mal konvertieren ....

-Michael

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von theo »

mschnell hat geschrieben:Vielleicht muss man sie dann mit irgendeiner anderen Software erst mal konvertieren ....
Darum geht's nicht. Aber trotzdem: Vllt hast du schon mal diesen Menupunkt gesehen:
Werkzeuge -> Kodierung von Projekten/Packages konvertieren...

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mse »

mschnell hat geschrieben: Hört sich aber nicht sehr clever an. Warum legt er die konstanten Strings nicht gleich in der Codierung an, wie sie benötigt werden ?
Weil zur Kompilierzeit die Codierung zur Laufzeit nicht bekannt ist.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mse »

theo hat geschrieben: Warum meinst du, dass das nicht die Standardeinstellung bei Lazarus sein kann?
Ja, das Trennen von Lazarus Units ohne Codepageangabe und nicht-Lazarus Units mit Codepageangabe ist eine Möglichkeit. Auch nicht das Gelbe vom Ei, speziell in event handlern...
Und probiere mal Caption:= 'öäü' unter Windows.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mschnell »

mse hat geschrieben:Weil zur Kompilierzeit die Codierung zur Laufzeit nicht bekannt ist.
Meinst Du die nationale Systemcodierung von ANSI-Strings ?

Ich sehe ein, dass es (falls nicht dynamisch kodierte Strings verwendet werden) die wenigsten Probleme gibt, wenn keine Stringkonstanten in nicht-Unicode Codierung erzeugt werden. Das führt natürlich zu erhöhtem Aufwand zur Laufzeit.

-Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mse »

mschnell hat geschrieben:
mse hat geschrieben:Weil zur Kompilierzeit die Codierung zur Laufzeit nicht bekannt ist.
Meinst Du die nationale Systemcodierung von ANSI-Strings ?
Ja.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mschnell »

theo hat geschrieben:Aber trotzdem: Vllt hast du schon mal diesen Menupunkt gesehen:
Werkzeuge -> Kodierung von Projekten/Packages konvertieren...
Ganz schlecht für mich. Die Sourcen der Projekte müssen sowohl mit Delphi als auch mit FPC übersetzbar sein.

-Michael

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von theo »

mschnell hat geschrieben: Ganz schlecht für mich. Die Sourcen der Projekte müssen sowohl mit Delphi als auch mit FPC übersetzbar sein.
Ich glaube nicht, dass die Kompatibilität mit deinem alten Delphi die Grundüberlegung für die weitere Entwicklung von Lazarus sein sollte.

Aber du bewertest die Sache total über. Wo treten den konkret Probleme auf? Normaler Quellcode ist ja sowieso nur in ASCII, ausser vllt. ein paar Umlaute in Kommentaren.
Dann gibt's doch höchstens noch wenige Units mit Stringkonstanten welche allenfalls Umlaute enthalten.
Die muss man vielleicht mit Compilerschalter einhängen oder was-weiss-ich.

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von theo »

mse hat geschrieben: Und probiere mal Caption:= 'öäü' unter Windows.
Stimmt, geht nicht.
Das ist dann wohl wegen dem WS-Manager/Wide2AnsiMove.
Könnte man den nicht global ausschalten und diese Funktionen nur noch spezifisch verwenden, dort wo sie gebraucht werden?
Also in AnsiToUTF8 etc?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mse »

theo hat geschrieben: Könnte man den nicht global ausschalten und diese Funktionen nur noch spezifisch verwenden, dort wo sie gebraucht werden?
Also in AnsiToUTF8 etc?
Das wäre möglich. Man müsste einen Widestringmanager machen, der, unabhängig von der Systemcodierung, immer nach utf-8 wandelt. Danach müsste man spezielle AnsiToUTF8 und UTF8ToAnsi Routinen bauen, die ohne Widestringmanager auskommen und alle System Aufrufe mit UTF8ToAnsi/WideToAnsi ausstatten.
Die Verwendung von Ansistrings in der Systemcodierung wäre ebenfalls problematisch.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mschnell »

theo hat geschrieben:Kompatibilität mit deinem alten Delphi
Haha meine Kollegen haben eine Million Zeilen aktiven Delphi-Code, der permanent gepflegt wird und weiterhin so laufen soll. Ein kleiner Teil davon soll nun auch auf Linux laufen. Catch 22 :evil:

-Michael

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von theo »

mschnell hat geschrieben:
theo hat geschrieben:Kompatibilität mit deinem alten Delphi
Haha meine Kollegen haben eine Million Zeilen aktiven Delphi-Code, der permanent gepflegt wird und weiterhin so laufen soll. Ein kleiner Teil davon soll nun auch auf Linux laufen. Catch 22 :evil:
1. Und was soll das jetzt für die Lazarus Entwicklung heissen? Nicht mal Delphi ist vollständig rückwartskompatibel.
2. Was hindert dich daran, den Code unter Linux lauffähig zu machen?

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von Patito »

mschnell hat geschrieben:
theo hat geschrieben:Kompatibilität mit deinem alten Delphi
Haha meine Kollegen haben eine Million Zeilen aktiven Delphi-Code, der permanent gepflegt wird und weiterhin so laufen soll. Ein kleiner Teil davon soll nun auch auf Linux laufen. Catch 22 :evil:

-Michael
Ob sowas gut geht? Delphi ist ja nicht mal richtig kompatibel zu sich selbst...
Irgendwann musst Du dich wohl entscheiden. Delphi in den Abgrund folgen oder einen vernünftigen Compiler verwenden...
Wenn irgendwann mal in 5 Jahren Delphi auch 64bit beherrscht ist von der Kompatibilität her wohl eh Schluss mit Lustig (dafür wird EmBordero schon sorgen...).

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Von wegen UTF-8 ist die Quelle allen Übels...

Beitrag von mschnell »

theo hat geschrieben:2. Was hindert dich daran, den Code unter Linux lauffähig zu machen?
Der Code soll - wie gesagt - auch mit Delphi übersetzbar bleiben. Das ist in den meistern Fällen mit einigen ifdefs zu machen, aber ein Konverter nützt mit da nix. deshalb (zu 1:) ein mitgelieferter Quellcode-Konverter wäre m.E. also eine Fehlentwicklung.

-Michael

Antworten