Wie funktioniert RawByteString? (ab FPC 3.x)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Benutzeravatar
theo
Beiträge: 10899
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von theo »

Das bringt hier nichts MmVisual.
Der Ort wo so etwas diskutiert wird ist hier: http://lists.freepascal.org/lists/fpc-devel/
Lies erstmal die ganzen Threads der vergangenen Jahre zu diesem Thema durch.
Wenn du danach noch etwas zu dem Thema einbringen möchtest: Viel Glück! :wink:

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: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von mschnell »

MmVisual hat geschrieben:Meine ich nicht....
Soooo blöd sind die Jungs von Embarcadero auch nicht. Die werden sich schon etwas dabei gedacht und einiges ausgetestet haben, als sie sich von einigen Jahren dafür entschieden haben die "neuen" Strings so zu implementieren, statt die naheliegende Variante "Strings sind Objekte" einzubauen. Einige Fehler wurden dann bis DXE-2 ausgebügelt und es gibt sicherlich immer noch einiges zu verbessern und zu erweitern.

FPC/Lazarus müssen auf jeden Fall einen voll kompatiblem Modus anbieten, um den Umstieg DXE -> Lazarus zu ermöglichen. Das ist natürlich für ein Multi-Plattform nicht ganz so einfach (und auch weniger performant) als bei DXE, das nur Windows kann.

Alle Erweiterungen / Verbesserungen müssen intern hinreichend kompatibel sein, um die User nicht zu sehr zu verwirren.

-Michael
Zuletzt geändert von mschnell am So 23. Jun 2013, 17:02, insgesamt 1-mal geändert.

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von MmVisual »

Genau das würde man mit meinem Vorschlag erreichen

- Kompatibel zu FPC 2.6
- Kompatibel zu Delphi, sogar kompatibler, da der Typecast per Typ(Var) geht.
- Einfacher zu verwenden
- Der String wäre dann zwar eine Kombination zwischen Datentyp und Objekt, sollte nach außen hin (Lazarus-User) nicht spürbar sein.

Blöd sind die Leute von Embarcadero sicher nicht. Nur haben die sich damals mit ihren festgelegten 16-Bit breiten Zeichen verkalkuliert.

Nun mit meinem Konstrukt ist ganz einfach per Definition der String innerhalb Lazarus UTF8. Und wenn das einem nicht passt und lieber Unicode als Standard haben will, so würde das per Kompileroption (Kompilerschalter) ganz einfach auf jeden anderen beliebigen Typ umgebogen werden können und schwups ist der "String" dann per Default Unicode oder Ansi oder sonst was. Somit hat der User selbst die Möglichkeit zu bestimmen wie der Typ String intern aufgebaut ist.

Sogar das:

Code: Alles auswählen

Var s1: Utf8String;
  s2: UnicodeString;
Begin
  s1 := s2;  // Würde keine Compiler Meker Meldung erzeugen
Eine Float := Integer; Zuweisung erzeugt ja auch keine Mecker-Meldung. Sondern funktioniert einfach ohne den User zu nerven.
EleLa - Elektronik Lagerverwaltung - www.elela.de

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: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von mschnell »

MmVisual hat geschrieben:- Kompatibel zu Delphi, sogar kompatibler, da der Typecast per Typ(Var) geht.
Nützt nix, da Die verschiedednen Delphi Versionen untereinder gar nicht kompatibel sind.
MmVisual hat geschrieben:- Einfacher zu verwenden
Da es (zum Beispiel) bei dem Ausdruck myString[n] von vorne herein nicht klar ist, ob man da das n-te "druckbare Zeichen" oder das n-ten Codewort der aktuell verwendeten Codierung meint. Somit geht bei Unicode "einfach" überhaupt nicht.
MmVisual hat geschrieben:- Der String wäre dann zwar eine Kombination zwischen Datentyp und Objekt, sollte nach außen hin (Lazarus-User) nicht spürbar sein.
ein sehr frommer Wunsch :evil:
MmVisual hat geschrieben:Blöd sind die Leute von Embarcadero sicher nicht. Nur haben die sich damals mit ihren festgelegten 16-Bit breiten Zeichen verkalkuliert.
Stimmt nicht. (Das würde für "WideString"s zutreffen). Die DXE-Strings können - wie gesagt - beliebig in 8, 16 oder 32 Bit Codierungen angelegt werden (16 Bit ist Default für den Type "String(0)", der auch einfach "String" heißt, aber man kann auch alle seine Strings anders anlegen.)

-Michael
Zuletzt geändert von mschnell am So 23. Jun 2013, 23:33, insgesamt 1-mal geändert.

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von MmVisual »

Mit "myString[n]" erwarte ich als DAP (dümmster anzunehmender Programmierer) das n te sichtbare Zeichen, zurückgegeben in der Codierung die der String nun mal hat.
Da ein String ein intelligentes Objekt wäre, könnte man damit auch myString.GetByte(n) ausführen und man bekäme tatsächlich das Byte an der Position im Speicher.
Ein PChar(myString) liefert dann auch den Zeiger auf das erste String-Zeichen, so wie bisher auch.

Dass Delphi untereinander nicht so kompatibel ist durfte ich auch schon feststellen, genau deshalb sollten sich die FPC Leute auch nicht zu eng an Delphi klammern, sondern eher die Lösung verwenden, die für die Zukunft am besten geeignet ist und sich nicht an irgend einem alteingesessenen Festklammern.
Dafür gibt es dann den Versionssprung vom FPC von 2.x auf 3.x. Wer das nicht will kann Lazarus nach wie vor mit FPC2.x nutzen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Soner
Beiträge: 733
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von Soner »

Manchmal werde ich das Gefühl nicht los, dass Lazarus+FPC eine billige Kopie von Delphi ist. Alles was in Delphi nicht richtig implementiert ist, ist auch bei FPC+Laz nicht richtig implementiert. Delphi hat keine richtige Netzwerk-, Grafikschnittstellen so Lazarus auch nicht.
Ich verstehe immer noch nicht, warum sie anstreben Delphi kompatibel zu sein. Wieviele Delphi Programmier gibt"s noch auf der Welt die angeworben werden müssen. Delphi ist doch kein standardisierte Sprache. Kein Mensch wird doch Lazarus+FPC verwenden weil er Delphi toll findet dann bleibt er auf Delphi.
Am wenigsten braucht man kompatibel mit XE-Versionen sein. Wieviele XE-Benutzer gibt"s denn auf Welt. Wenn jemand von Delphi auf Lazarus wechselt dann höchstens von alten Delphi-Versionen.
Ich wünschte Lazarus und Freepascal Leute würden sich zusammentun und alles Einheitlich machen, überflüssige mehrfache implementierungen eliminieren.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von Socke »

Soner hat geschrieben:Ich wünschte Lazarus und Freepascal Leute würden sich zusammentun und alles Einheitlich machen, überflüssige mehrfache implementierungen eliminieren.
In der Tat gibt es da noch sehr viele Differenzen. Ich finde es schon doof, dass es für die Free Component Library und die Lazarus-Packages unterschiedliche Paketverwaltungen gibt (und beide sind nicht die Besten). Als Entwickler interessiert mich nur: Ich möchte Klasse/Komponente xyz verwenden. Ob die jetzt in die IDE integriert werden kann oder nicht, ist doch für den Bezug erst einmal nebensächlich.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von MmVisual »

@Socke
Das hat einen einfachen Grund:
Lazarus/LCL Entwickler gibt es relativ viele und wenn da etwas beim FPC fehlt wird es eben mal schnell implementiert.
FPC Entwickler gibt es lange nicht so viele und da was neues rein zu machen dauert auch entsprechend länger. Dazu kommt noch dass der FPC als nativ Compiler gedacht ist, mit dem man für alle möglichen Prozessoren ohne GUI ein Programm schreiben kann. Somit alles was man da ein macht muss auch für eine ganze menge an anderen Systemen unterstützen/getestet werden.
Mit auch aus diesem Grund wollte ich ein komplettes Redesign vom Typ "String" um für die Zukunft gerüstet zu sein.
(Irgend wann lernen wir Außerirdische kennen und dann wird deren Zeichensatz auch noch in unseren integriert :wink: Wir können ja schon mal mit dem Klingonischen beginnen.)
EleLa - Elektronik Lagerverwaltung - www.elela.de

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: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von mschnell »

Soner hat geschrieben: weil er Delphi toll findet dann bleibt er auf Delphi.
Genau. Besonders wenn er seine Programme auf Linux oder Mac laufen lassen will. :evil:

-Michael

Soner
Beiträge: 733
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von Soner »

mschnell hat geschrieben:
Soner hat geschrieben: weil er Delphi toll findet dann bleibt er auf Delphi.
Genau. Besonders wenn er seine Programme auf Linux oder Mac laufen lassen will. :evil:

-Michael
Naja Lazarus ist ja für Mac OS X nicht richtig funktionsfähig, verwendet ein GUI das schon Apple abgeschrieben hat.
Und Linux Desktop kann man vernachlässigen. Linux Desktop ist wie Dieter Bohlen, eine kann nicht richtig singen andere funktioniert nicht richtig, drängen sich auf obwohl sie Kopfschmerzen bereiten.
Zuletzt geändert von Soner am Mo 24. Jun 2013, 00:25, insgesamt 1-mal geändert.

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

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von theo »

Soner hat geschrieben: Und Linux Desktop kann man vernachlässigen. Linux Desktop ist wie Dieter Bohlen, eine kann nicht richtig singen andere funktioniert nicht richtig, dringen sich auf obwohl sie Kopfschmerzen bereiten.
Du bist ja ganz schön laut. Vielleicht erst mal am Deutsch arbeiten?
Ich bin seit Jahren fast ausschließlich auf Linux-Desktop und bekomme Entzugserscheinungen auf Windows und Mac.

Soner
Beiträge: 733
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von Soner »

MmVisual hat geschrieben:@Socke
...
FPC Entwickler gibt es lange nicht so viele und da was neues rein zu machen dauert auch entsprechend länger. Dazu kommt noch dass der FPC als nativ Compiler gedacht ist, mit dem man für alle möglichen Prozessoren ohne GUI ein Programm schreiben kann. Somit alles was man da ein macht muss auch für eine ganze menge an anderen Systemen unterstützen/getestet werden.
..
Für Packages sind ja nicht zwingend GUI erforderlich.

Soner
Beiträge: 733
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von Soner »

theo hat geschrieben: Du bist ja ganz schön laut. Vielleicht erst mal am Deutsch arbeiten?
Ich bin seit Jahren fast ausschließlich auf Linux-Desktop und bekomme Entzugserscheinungen auf Windows und Mac.
Meinst du, da trete ich leiser :D
Mit dem Deutsch wird es nichst mehr, zu schwer und für die restlichen Jahre lohnt es nicht mehr. Dazu kommt die Eingeberonen können es nichtmal richtig.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von Christian »

Naja Lazarus ist ja für Mac OS X nicht richtig funktionsfähig, verwendet ein GUI das schon Apple abgeschrieben hat.
Also von "nicht richtig funktionstüchtig" bis es wird (noch) ein depricated Widgetset eingesetzt, ist schon noch ne ganze menge Luft. Ich hab unter OSX recht wenig Probleme dafür das es nach deiner Aussage nicht funktioniert...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie funktioniert RawByteString? (ab FPC 3.x)

Beitrag von MmVisual »

Ich kann unter MAC mein Projekt nicht wirklich nutzen, siehe hier
http://bugs.freepascal.org/view.php?id=24602
:cry: :cry: :cry: :cry: :cry: :cry: :cry:
Hilfe wäre willkommen (PN schreiben, ich kenne mich mit MAC kaum aus)
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten