Also...hab die SetParameters Funktion jetzt so angeändert:
Code:
TDynArray = array of PChar;
TParameters = array [0..1] of TDynArray;
function SetNeededParameters(pParameters: TDynArray): Boolean; cdecl; Begin
SetLength(Parameters[0], 1);
GetMem(Parameters[0][0], StrLen(pParameters[0]) + 1);
StrCopy(Parameters[0][0], pParameters[0]);
result := True;
end;
Das funktioniert einwandfrei.
Allerdings gibts Probleme beim Aufrufen der Funktion. Hab das so probiert:
Code:
TDynArray = array of PChar;
Parameters: TDynArray;
SetLength(Parameters, 1);
GetMem(Parameters[0], Length(EditSetParams.Text) + 1); StrCopy(Parameters[0], PChar(EditSetParams.Text));
SetParameters(Parameters);
Wenn man das so macht, dann wird allerdings nicht der komplette Inhalt von EditSetParams.Text in Parameters[0] gespeichert, sondern nur der erste Buchstabe davon.
Das wundert mich sehr, da ich folgendes Beispiel für die StrCopy Funktion in der Online Hilfe von Delphi gefunden habe:
Code:
procedure TFormMain.Button1Click(Sender: TObject);
var
Buffer: PChar;
begin
GetMem(Buffer,Length(Label1.Caption) + Length(Edit1.Text) + 1);
StrCopy(Buffer, PChar(Label1.Caption));
StrCat(Buffer, PChar(Edit1.Text));
Label1.Caption := Buffer;
Edit1.Clear;
FreeMem(Buffer);
end;
Laut Beschreibung der Online Hilfe soll nach dem Klicken auf Button1 die Inhalte von Label1 und Edit1 kombiniert und dann in Label1 ausgeben werden. Hab das Beispiel per Copy&Paste ausprobiert und habe das gleiche Problem, wie mit dem Aufruf meiner SetParameters Funktion: Es wird nur jeweils der erste Buchstabe kopiert.
Weiß jemand, ob das ein Bug in Delphi oder ein Fehler in der Online Hilfe ist?
Hat jemand eine Lösung?