Thema: Delphi frage zu strings+Char

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: frage zu strings+Char

  Alt 2. Aug 2003, 15:44
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[1] wird das erste erste Zeichen des Strings angesprochen, und das @ davor bedeutet, dass der Compiler die Adresse nehmen soll. Gesamt
heisst das für den Compiler:
Trage die Adresse des ersten Zeichens von s ein.

Die Adresse eines Zeichens lässt sich auch als PChar bezeichnen.

Eine Stringvariable enthält eigentlich "nur" die Adresse des Strings, so dass @s den Pointer auf die Adresse zurückgibt, und nicht auf den Inhalt, also die Adresse eines Pointers!

Das diese Schreibweise (@s[1]) funktioniert liegt übrigens nur daran, dass Borland Stringvariablen intern automatisch nullterminiert. Wäre das nicht der Fall hättest Du mit dieser Variante ein Problem

Die, üblicher Weise verwendeten, Hugestrings bestehen aus einem Referenzzähler (integer), einem Längenfeld (integer), dem Inhalt (char) und einer binäre Null (char), wobei (in Deinem Beispiel) s die Adresse des Inhaltes enthält. Da der Referenzzähler und das Längenfeld vor dem Inhalt liegen, beginnt der Referenzzähler auf der Adresse s-8, und das Längenfeld auf der Adresse s-4. Die Null liegt dann auf s+Inhalt Längenfeld.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat