Also, genau so, wie es jetzt von dir gepostet wurde (DeddyH), hatte ich es von Anfang an gehabt. Hier nochmal meine Version, falls ich was übersehen habe.
Delphi-Quellcode:
type
TSQLData =
array of array of String;
type
//SQL-Funktionen
procedure AddSQLField(data: TSQLData; feld:
String; wert:
String; utf8enc: Boolean = true);
function InsertSQL(ZQuery: TZQuery; table:
String; data: TSQLData): Boolean;
//SQL-Funktionen
procedure AddSQLField(data: TSQLData; feld:
String; wert:
String; utf8enc: Boolean = true);
begin
SetLength(data, Succ(Length(data)), 2);
if (utf8enc)
then
begin
data[High(data)][0]:=utf8encode(feld);
data[High(data)][1]:=utf8encode(wert);
end else
begin
data[High(data)][0]:=feld;
data[High(data)][1]:=wert;
end;
end;
function InsertSQL(ZQuery: TZQuery; table:
String; data: TSQLData): Boolean;
var
i: Integer;
begin
for i:=0
to High(data)
do
begin
ShowMessage(data[i][0]+'
'+data[i][1]);
end;
end;
///////////////////
//// HAUPTUNIT ////
///////////////////
procedure TForm1.frmSchemabtnSaveClick(Sender: TObject);
var
daten: TSQLData;
begin
AddSQLField(daten, '
pid', '
1');
AddSQLField(daten, '
titel', frmGesetz.Editor.Text);
AddSQLField(daten, '
text', '
test2');
InsertSQL(ZQuery1, '
test', daten);
end;
So, und in der Bibliotheks-
Unit wird nicht die lokale Variable "Daten" genutzt, sondern eine völlig neue, gleichen Typs initialisiert und beschrieben.
Ich verstehe aber ehrlich gesagt nicht, wieso das so ist. Denn, ein Array ist doch schon ein Pointer auf eine Adresse und wenn ich diesen übergebe, wie kann dann ein neues Array angelegt werden?
Danke!