Seite 36 von 42

Verfasst: 08.04.2007 23:22
von AND51
Bei ProgramParameter() fehlt die Angabe, ob die Zählung bei 0 oder 1 beginnt - nur falls wir das noch nicht hatten.

Verfasst: 09.04.2007 02:22
von Kaeru Gaman
nco2k hat geschrieben:
Variablen, Typen und Operatoren hat geschrieben:String .s Länge des Strings + 1 unlimitiert
ist es nicht so, dass zwei 0byte angehängt werden, wenn man die exe als unicode erstellt ?!
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.
ihr widersprecht euch garnicht.
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)

Verfasst: 09.04.2007 02:25
von AND51
> 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!

Verfasst: 09.04.2007 02:33
von ts-soft
Kaeru Gaman hat geschrieben: richtig wäre:
(Länge des Strings + 1) * SizeOf(Char)
Bin ja nicht pinkelig, aber:
Länge des Strings + SizeOf(Character)

Verfasst: 09.04.2007 02:39
von Kaeru Gaman
...hast recht....

aber es heißt pingelig...

pinkelig heißt du musst auf tö, oder du hast die taschen voller kohlwurst....

Verfasst: 09.04.2007 02:46
von ts-soft
is platt, und jetzt geh ich aufs tö :mrgreen:

Verfasst: 09.04.2007 09:45
von nco2k
ts-soft hat geschrieben:
Kaeru Gaman hat geschrieben: richtig wäre:
(Länge des Strings + 1) * SizeOf(Char)
Bin ja nicht pinkelig, aber:
Länge des Strings + SizeOf(Character)
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)

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.
so eine aussage kann ja nur von AND51 kommen. :lol:

c ya,
nco2k

Verfasst: 09.04.2007 13:40
von ts-soft
nco2k 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)
hallo, selber wach werden :wink:

Code: Alles auswählen

Len(string.s) + SizeOf(Character)
Nix + 1 und nix malnehmen :lol:
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)

Verfasst: 09.04.2007 14:10
von nco2k
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

:wink:

c ya,
nco2k

Verfasst: 09.04.2007 14:17
von ts-soft
Meine Formel macht schon Sinn:

Code: Alles auswählen

MyBuffer.l = Space(Len(string.s)) + SizeOf(Character)
Wenn dieser Zweck erwünscht ist, ansonsten sollte man immer StringByteLen
nehmen, das ist dafür extra geschaffen :wink: