Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#13

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 17:24
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!
  Mit Zitat antworten Zitat