| Autor |
Beitrag |
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Sa 09.01.10 19:19
Hey Leute,
In Delphi 2010 wird ja bekanntermaßen Unicode verwendet, weshalb die Strings andere Längen haben. Jetzt überlege ich gerade, ob ich das Ganze Protokoll schlicht "uminterpretiere" und viel Spaß mit der Längenänderung habe (btw, wie viel Byte hat denn jetzt ein Zeichen?) oder ob ich einen neuen Typ definiere, der hauptsächlich ein Array of Byte beinhaltet und dass dann irgendwie versende.
Tipps, Anregungen, Vorschläge erwünscht 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 09.01.10 19:23
Schlag Narses solange, bis er es freiwillig in seinem Tutorial korrigiert.
Alternativ: AnsiString statt String verwenden.
Ich bin für ersteres
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
FinnO 
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Sa 09.01.10 19:26
Wird gemacht, Sir^^
*Baseballschläger such*
--- Moderiert: von FinnO: Nachtrag: ---
funktioniert leider nicht, wie gewünscht. Wenn ich mit Socket.SendText(meinAnsiString); sende werden die ersten 4 Bytes geflissentlich ignoriert
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| SetLength(BinMessage,4); PInteger(@BinMessage[1])^ := Length(edInput.Text); BinMessage := BinMessage + edInput.Text; ClientSocket.Socket.SendText(edInput.Text); |
hier, beim empfangen:
Delphi-Quelltext 1: 2: 3:
| BinMessage := Socket.ReceiveText; memLog.Lines.Add(BinMessage) ; memLog.Lines.Add(Dump(BinMessage)); |
mysteriös 
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 09.01.10 19:57
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
FinnO 
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Sa 09.01.10 20:06
*tilt*
und ich dachte, sowas doofes passiert allen, nur mir nicht 
|
|
Astat
      
Beiträge: 75
Erhaltene Danke: 1
Windows 2000
D6, D7, D2007, Lazarus
|
Verfasst: Sa 09.01.10 20:26
FinnO hat folgendes geschrieben : | Hey Leute,
oder ob ich einen neuen Typ definiere, der hauptsächlich ein Array of Byte beinhaltet und dass dann irgendwie versende.
Tipps, Anregungen, Vorschläge erwünscht  |
Hallo Narses, habe meine Socketklassen alle mit Pointer und cbLen aufgebaut, alternativ auch mit array of byte.
Strings, Pchar verwende ich schon lange nicht mehr.
lg. Astat
|
|
FinnO 
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Sa 09.01.10 20:35
naja, aber der unterschied zwischen einem String und einem Array of Byte hält sich wirklich mal in Grenzen 
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 09.01.10 20:38
Moin!
Wie im Tut zu lesen, habe ich damals deshalb Strings genommen, weil hier die Speicherverwaltung komplett von der CompilerMagic übernommen wird. Dass Embar-Bor-Inpri-Code-cadero mal aus Strings UnicodeStrings machen würde (und zwar generische!), war da nicht abzusehen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 09.01.10 20:41
FinnO hat folgendes geschrieben : | naja, aber der unterschied zwischen einem String und einem Array of Byte hält sich wirklich mal in Grenzen  |
Bis auf eins: mit Strings hat man gaanz viel Compilermagic und muss sich nicht mit fehlerträchtigen Move-Konstrukten rumschlagen.
Könnte ja auch mal einer in den NBFP-Komponenten auf `Binary` und `BinaryChar` umbauen, die per IFDEF dann auf den jeweils passenden Typen umgebogen werden. Macht IIRC die J(V)CL so.
Da aber in D2010 selbst einige Funktionen defekt sind, und trotz Ansi im Namen auf Unicode arbeiten, wird das etwas schwierig.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
|