Hallo Leute
Ich habe folgendes Delphi Problem:
Meine ObjectListe (Keyliste) wird in der Hauptverarbeitung erstellt. Das Hineinfüllen der einzelne Objecte geht aber über eine Methode, die eine Schleife beinhaltet. Wenn ich nun in der besagten Methode Keyliste.add(Objekt) mache ist es in der oberen Hauptverarbeitung nicht mehr bekannt. (Wenn ich dort dann die Objekte so herauslesen will-->
for index:= 0 to (Keyliste.Count - 1) do steht Count auf 0!
wenn ich allerdings die Objecte mit Keyliste.add in der Hauptverarbeitung mache, habe ich das Problem, dass in der Methode wegen der Schleife die einzelnen Objekte überschrieben werden. d.h ich kriege nur das letzte und Count steht immer auf 1!
Jetzt habe ich versucht es trotzdem in der Methode zu machen und als Rückgabewert die TObjectList zu geben aber da motzt der Compiler (Integer und TObjectlist sind incompatible Datentypen)
Was soll ich tun? bin verzweifelt
Hier der Code:
in der Hauptverarbeitung (das wesendliche habe ich fett gemacht)
Keyliste:= TObjectList.Create();
anzkommas:= getAnzahlKommas(Fields[FieldIndex]);
getAllKeysFromRegel(Fields[FieldIndex], tmpschluessel); // Methode
strTableName:= Fields[FieldIndex].OberFeld;
for index:= 0 to (Keyliste.Count - 1) do begin //hier lese ich es raus
if tmpschluessel.Table1 = Name then
begin
die methode getAllKeysFromRegel
function TTableModel.getAllKeysFromRegel(Fields: TFieldModel; var tmpschluessel: TSchluessel):TObjectList;
var strIndex, strOrigIndex, strSchluesselpaar : String;
FieldIndex, x, anzkommas : Integer;
Keyliste: TObjectList;
begin
strIndex:= Fields.Beziehung;
strIndex:= strIndex + ',';
anzkommas:= getAnzahlKommas(Fields);
for x:=0 to anzkommas do begin
strSchluesselpaar:= Copy(strIndex, 0 , Pos(',', strIndex)-1);
strIndex:= Copy(strIndex, length(strSchluesselpaar)+2, length(strIndex));
tmpschluessel:= TSchluessel.Create(strSchluesselpaar);
result:= Keyliste.add(tmpschluessel);
end;
end;
Ich habe folgendes Delphi Problem:
Meine ObjectListe (Keyliste) wird in der Hauptverarbeitung erstellt. Das Hineinfüllen der einzelne Objecte geht aber über eine Methode, die eine Schleife beinhaltet. Wenn ich nun in der besagten Methode Keyliste.add(Objekt) mache ist es in der oberen Hauptverarbeitung nicht mehr bekannt. (Wenn ich dort dann die Objekte so herauslesen will-->
for index:= 0 to (Keyliste.Count - 1) do steht Count auf 0!
wenn ich allerdings die Objecte mit Keyliste.add in der Hauptverarbeitung mache, habe ich das Problem, dass in der Methode wegen der Schleife die einzelnen Objekte überschrieben werden. d.h ich kriege nur das letzte und Count steht immer auf 1!
Jetzt habe ich versucht es trotzdem in der Methode zu machen und als Rückgabewert die TObjectList zu geben aber da motzt der Compiler (Integer und TObjectlist sind incompatible Datentypen)
Was soll ich tun? bin verzweifelt
Hier der Code:
in der Hauptverarbeitung (das wesendliche habe ich fett gemacht)
Keyliste:= TObjectList.Create();
anzkommas:= getAnzahlKommas(Fields[FieldIndex]);
getAllKeysFromRegel(Fields[FieldIndex], tmpschluessel); // Methode
strTableName:= Fields[FieldIndex].OberFeld;
for index:= 0 to (Keyliste.Count - 1) do begin //hier lese ich es raus
if tmpschluessel.Table1 = Name then
begin
die methode getAllKeysFromRegel
function TTableModel.getAllKeysFromRegel(Fields: TFieldModel; var tmpschluessel: TSchluessel):TObjectList;
var strIndex, strOrigIndex, strSchluesselpaar : String;
FieldIndex, x, anzkommas : Integer;
Keyliste: TObjectList;
begin
strIndex:= Fields.Beziehung;
strIndex:= strIndex + ',';
anzkommas:= getAnzahlKommas(Fields);
for x:=0 to anzkommas do begin
strSchluesselpaar:= Copy(strIndex, 0 , Pos(',', strIndex)-1);
strIndex:= Copy(strIndex, length(strSchluesselpaar)+2, length(strIndex));
tmpschluessel:= TSchluessel.Create(strSchluesselpaar);
result:= Keyliste.add(tmpschluessel);
end;
end;