AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Stringverwaltung / Ansistring
Thema durchsuchen
Ansicht
Themen-Optionen

Stringverwaltung / Ansistring

Ein Thema von AJ_Oldendorf · begonnen am 1. Jun 2018 · letzter Beitrag vom 1. Jun 2018
 
AJ_Oldendorf

Registriert seit: 12. Jun 2009
411 Beiträge
 
Delphi 12 Athens
 
#1

Stringverwaltung / Ansistring

  Alt 1. Jun 2018, 11:16
Hallo,
ich habe eine Frage zum AnsiString und dessen Verwaltung im Speicher.

Folgendes Konstrukt (ich möchte keine Diskussion über Nutzen/Zweck/Sinnhaftigkeit etc. des QT erzeugen):

Delphi-Quellcode:
//Global
var
  MyAnsi: AnsiString;

procedure TForm1.MakeStr(aStr: PAnsiString; Laenge: Integer);
var
  TmpStr : String[4];
begin
  SetLength(aStr^, 0);
  SetLength(aStr^, Laenge);

  TmpStr := 'HA';
  Move(TmpStr[1], aStr^[1], 2);
end;

procedure TForm1.MakeStr2(aStr: PAnsiString);
var
  NewMsgString : AnsiString;
begin
  NewMsgString := Copy(aStr^, 1, 2) + 'HALLO WELT';

  aStr^ := NewMsgString;
end;

procedure TForm1.MakeStr3(aStr: PAnsiString);
var
  NewMsgString : AnsiString;
begin
  NewMsgString := Copy(aStr^, 1, 2) + 'KURZ';

  aStr^ := NewMsgString;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MakeStr(@MyAnsi, SizeOf(Word));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  MakeStr2(@MyAnsi);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  MakeStr3(@MyAnsi);
end;
Beim Aufruf von MakeStr, wird die Länge des Strings gesetzt auf die Länge, welche im Parameter übergeben wurde.
Anschließend wird etwas in den String geschrieben.

Im Aufruf von MakeStr2 wird das SetLength nicht aufgerufen aber die Länge des Ursprungsstrings vergrößert, da ich noch was hinten dran hänge.

Im Aufruf von MakeStr3 wird das SetLength nicht aufgerufen aber die Länge des Ursprungsstrings verkürzt, da ich am Ende was "abschneide".

Meine Frage ist nun, muss ich das SetLength eigentlich machen bzw. kann mir beim Aufruf von MakeStr2/MakeStr3 etwas im Speicher hängen bleiben?

Ich hoffe ich versteht meine Frage und könnt mir weiterhelfen.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz