Diskussionen und Krempel (alt: Verbesserungen Doku v4)
Bei ProgramParameter() fehlt die Angabe, ob die Zählung bei 0 oder 1 beginnt - nur falls wir das noch nicht hatten.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
nco2k hat geschrieben:ist es nicht so, dass zwei 0byte angehängt werden, wenn man die exe als unicode erstellt ?!Variablen, Typen und Operatoren hat geschrieben:String .s Länge des Strings + 1 unlimitiert
ihr widersprecht euch garnicht.AND51 hat geschrieben:Nein, bei Unicode ist jedes Zeichen zwei Byte lang, also auch die NULL. Und da bin ich mir gerade ziemlich sicher! Aber wenn mir jemand nun das Gegenteil beweist, ist es mir auch Recht.
wenn ein zeichen 2 byte lang ist, und das zeichen #NULL ist, dann besteht es aus zwei nullbytes.
davon ab:
diese beschreibung muss noch angepasst werden, die stammt noch aus der zeit, als unicode noch nicht unterstützt wurde.
richtig wäre:
(Länge des Strings + 1) * SizeOf(Char)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
> wenn ein zeichen 2 byte lang ist, und das zeichen #NULL ist, dann besteht es aus zwei nullbytes.
Wie geil!
So gesehen hast du auch Recht!
Wie geil!

PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Bin ja nicht pinkelig, aber:Kaeru Gaman hat geschrieben: richtig wäre:
(Länge des Strings + 1) * SizeOf(Char)
Länge des Strings + SizeOf(Character)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
is platt, und jetzt geh ich aufs tö 

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

wie kommst du auf "Länge des Strings + SizeOf(Character)" ?! ich schiebe die schuld jetzt einfach mal auf die uhrzeit, aber richtig ist natürlich: (Len(String$) + 1) * SizeOf(Character)ts-soft hat geschrieben:Bin ja nicht pinkelig, aber:Kaeru Gaman hat geschrieben: richtig wäre:
(Länge des Strings + 1) * SizeOf(Char)
Länge des Strings + SizeOf(Character)
so eine aussage kann ja nur von AND51 kommen.AND51 hat geschrieben:Nein, bei Unicode ist jedes Zeichen zwei Byte lang, also auch die NULL. Und da bin ich mir gerade ziemlich sicher! Aber wenn mir jemand nun das Gegenteil beweist, ist es mir auch Recht.

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
hallo, selber wach werdennco2k hat geschrieben:wie kommst du auf "Länge des Strings + SizeOf(Character)" ?! ich schiebe die schuld jetzt einfach mal auf die uhrzeit, aber richtig ist natürlich: (Len(String$) + 1) * SizeOf(Character)

Code: Alles auswählen
Len(string.s) + SizeOf(Character)

Damit kann man z.B. den notwendigen Space-Buffer berechnen oder anderes sinnloses Zeugs
Die wahre Lösung ist aber diese:
Code: Alles auswählen
StringByteLength(string.s) + SizeOf(Chacter)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

wenn der string aus 100 zeichen besteht, wiegt dieser im ascii modus 100byte + 1byte für die null und da jedes zeichen 2byte lang ist im unicode modus, wiegt ein 100 zeichen langer string 200byte + 2byte für die null.
deine formel:
ascii = Len(string.s) + SizeOf(Character) -> 100 + 1 = 101byte
unicode = Len(string.s) + SizeOf(Character) -> 100 + 2 = 102byte
wo ist da der sinn?!
meine formel:
ascii = (Len(String$) + 1) * SizeOf(Character) -> 101byte
unicode = (Len(String$) + 1) * SizeOf(Character) -> 202byte
bzgl. StringByteLength(string.s) + SizeOf(Chacter), es ist auch was ganz anderes als Len(string.s) + SizeOf(Character) und ebenfalls richtig:
ascii = StringByteLength(string.s) + SizeOf(Chacter) -> 101byte
unicode = StringByteLength(string.s) + SizeOf(Chacter) -> 202byte
c ya,
nco2k
deine formel:
ascii = Len(string.s) + SizeOf(Character) -> 100 + 1 = 101byte
unicode = Len(string.s) + SizeOf(Character) -> 100 + 2 = 102byte
wo ist da der sinn?!

meine formel:
ascii = (Len(String$) + 1) * SizeOf(Character) -> 101byte
unicode = (Len(String$) + 1) * SizeOf(Character) -> 202byte
bzgl. StringByteLength(string.s) + SizeOf(Chacter), es ist auch was ganz anderes als Len(string.s) + SizeOf(Character) und ebenfalls richtig:
ascii = StringByteLength(string.s) + SizeOf(Chacter) -> 101byte
unicode = StringByteLength(string.s) + SizeOf(Chacter) -> 202byte

c ya,
nco2k
Zuletzt geändert von nco2k am 09.04.2007 14:18, insgesamt 1-mal geändert.
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Meine Formel macht schon Sinn:
Wenn dieser Zweck erwünscht ist, ansonsten sollte man immer StringByteLen
nehmen, das ist dafür extra geschaffen
Code: Alles auswählen
MyBuffer.l = Space(Len(string.s)) + SizeOf(Character)
nehmen, das ist dafür extra geschaffen

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
