Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#17

AW: Zugriff auf String^ (String pointer)

  Alt 17. Feb 2017, 10:50
mystring[0] ist nur bei Shortstrings die Länge des Strings. Benutze bitte immer length(mystring) falls Du die Länge benötigst.
Stimmt nicht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var str: String;
begin
  str := 'Hallo Welt!';
  Caption := IntToStr(PInteger(Integer(@str[1])-SizeOf(Integer))^);
end;
Length(mystring) ist natürlich trotzdem zu bevorzugen.
Delphi-Quellcode:
const
  bstb='aaaaaaaaaa';
var
  i: integer;
  mystring: ansistring;

begin
  mystring:='';
  for i:=1 to 30 do
    mystring:=mystring+bstb;
  self.Button1.Caption:=format('%d -- %d',[length(mystring),mystring[0]]);
end;
ergibt:

[Fehler] Unit1.pas(38): Auf Element 0 kann nicht zugegriffen werden - 'Length' oder 'SetLength' verwenden
es ging ja explizit um MyString[0] mit irgendwelcher Pointerartistik kann man ja beinahe alles erreichen

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat