Forum: Multimedia
Delphi
by Christian Seehase,
3. Aug 2003
Moin Zusammen,
@Silent:
Bei einem HugeString befindet sich auf den Bytes -8 bis -5 der Referenzzähler, und auf -4 bis -1 das Längenfeld des Strings (Werte relativ zu der Adresse in sHuge)
Deshalb -4, da dann auf das niederwertigste Byte des Längenfeldes adressiert wird.
Offsets relativ zu der Adresse in sHuge:
(Wert darunter in Hex, bezogen auf das Beispiel)
Referenzz. |Länge ...
Forum: Multimedia
Delphi
by Christian Seehase,
2. Aug 2003
Moin Chewie,
angenommen sHuge sei eine Variable vom Typ string, dann können die einzelnen Zeichen über den Index erreicht werden, wobei der Index von 1 bis length(sHuge) reicht.
sHuge enthält die Adresse des ersten Zeichens des Inhaltes, also wäre der Offset des ersten Zeichens, relativ zur Adresse des ersten Zeichens gleich 0.
Forum: Multimedia
Delphi
by Christian Seehase,
2. Aug 2003
Moin Chewie,
nein, denn der Inhalt beginnt ja bei Offset 0, so dass s+0 = Adresse des ersten Zeichens des Inhaltes.
Du hast hier offensichtlich die Indizes und die Offsets verwechselt ;-)
@Duffy:
Ich wollte eigentlich darauf hinaus, dass Delphi bei HugeStrings eben nicht "nach guter alter Manier" ein Längenbyte verwendet.
Das gilt nur für die ShortStrings.
Das folgende kann man mit...
Forum: Multimedia
Delphi
by Christian Seehase,
2. Aug 2003
Moin Duffy,
Nein, denn bei Hugestrings ist das Längenfeld ein integer (4 Byte), und liegt vor dem String.
An der Stelle, an der ein HugeString das erste Zeichen enthält, befindet sich bei ShortStrings das Längenbyte.
Ausserdem werden ShortStrings nicht automatisch null terminiert.
Forum: Multimedia
Delphi
by Christian Seehase,
2. Aug 2003
Moin iLLe,
an der von Dir genannte Stelle erwartet die Funktion die Adresse eines nullterminierten Strings (Typ PChar), da in C Strings i.d.R. intern keine Längenangabe haben, und das Ende eines Strings mit einer binären Null festgestellt wird.
Mit dem s wird das erste erste Zeichen des Strings angesprochen, und das @ davor bedeutet, dass der Compiler die Adresse nehmen soll. Gesamt
heisst...