Forum: Object-Pascal / Delphi-Language
by Neutral General,
17. Feb 2017
Stimmt nicht:
procedure TForm1.Button1Click(Sender: TObject);
var str: String;
begin
str := 'Hallo Welt!';
Caption := IntToStr(PInteger(Integer(@str)-SizeOf(Integer))^);
end;
Length(mystring) ist natürlich trotzdem zu bevorzugen.
Forum: Object-Pascal / Delphi-Language
by Neutral General,
16. Feb 2017
Ja, wenn dus richtig meinst :mrgreen:
String (ohne @) ist schon die Adresse auf den Zeichenkette des Strings.
@String ist die Adresse auf die Adresse auf die Zeichenkette des Strings
Oder anders gesagt: @String (ohne Index auf ein bestimmtes Zeichen) ist zu 99% falsch oder unnötig.
var str: String;
pstr: PChar;
begin
Forum: Object-Pascal / Delphi-Language
by Neutral General,
16. Feb 2017
Lies den 2. Teil meiner Antwort.
=>
var
NormalerString : String;
PointerString : PChar;
begin
NormalerString := 'Hallo Welt!';
PointerString := PChar(Integer(NormalerString) + 5);
ShowMessage(PointerString);
Forum: Object-Pascal / Delphi-Language
by Neutral General,
16. Feb 2017
Weil ein String an Stelle die Länge gespeichert hat und ich glaube davor sogar noch ein paar Informationen.
Wenn du einen String-Pointer einfach um 5 nach hinten verschiebst gibt es diese Informationen davor nicht, weil davor ja die anderen Buchstaben stehen.
Außerdem ist ein String schon ein Pointer. Wenn du @StringVariable schreibst ist das ein Pointer auf den String-Pointer. Und wenn du den...
Forum: Object-Pascal / Delphi-Language
by Neutral General,
16. Feb 2017
var
NormalerString : String;
PointerString : PChar;
.
.
NormalerString := 'Hallo Welt!';
PointerString := @NormalerString;
ShowMessage(PointerString);
Sollte so gehen.
Forum: Object-Pascal / Delphi-Language
by Neutral General,
16. Feb 2017
NormalerString := 'Hallo Welt!';
PointerString := @NormalerString;
ShowMessage(PointerString^);
Einfach so.