AnsiString als Parameter by value übergeben
-
Hallo,
ich übergebe einen AnsiString mit Werteübergabe, aber der ursprüngliche AnsiString wird trotzdem verändert. Habe vergeblich verschiedenes ausprobiert. Wie muß ich das denn machen, daß der ursprünglich Wert unverändert bleibt?
Danke im voraus.void __fastcall TForm1::Button2Click(TObject *Sender)
{
String s("Ein AnsiString");
modi(s);
ShowMessage(s); // ist von funktion modi verändert}
//---------------------------------------------------------------------------
void modi (String s1)
{
s1[s1.Length()]='ä';
}
-
Kann ich nicht nachvollziehen, funktioniert bei mir problemlos.
-
@minus sagte in AnsiString als Parameter by value übergeben:
void modi (String s1)
{
s1[s1.Length()]='ä';
}Ich sehe das problem eher hier. Denn damit greifst du theoretisch auf einen speicherbereich zu, der auserhalb des string objekt liegt.
Kann aber gut sein, dass die VCL String klasse das hier irgendwie sinvoll abfängt und den genutzen speicherbereich erweitert
-
@firefly
Nö, das passt schon. Die Delphi Stringtypen fangen bei Index 1 an, nicht bei 0.
-
@DocShoe sagte in AnsiString als Parameter by value übergeben:
Kann ich nicht nachvollziehen, funktioniert bei mir problemlos.
Bei mir ebenso