Einzelnen Beitrag anzeigen

bl3nder

Registriert seit: 18. Aug 2006
89 Beiträge
 
#15

Re: E2010 Inkompatible Typen: 'Integer' und 'Pointer'

  Alt 12. Aug 2008, 10:49
Ok ich gebe zu es ist ziemlich unübersichtlich geworden, nochmal zur Erklärung:

In meiner Datenbank hab ich eine Tabelle "Workstation". Diese hat neben einer ID auch Username etc.

In meinem Model_Database.pas habe ich nun die SQL Abfrage in einer Funktion die so aussieht:

Delphi-Quellcode:
// Wird in Model.TWorkstationSearch.DBSearch aufgerufen
function TWorkstationSearch.DBSearch;
var List: TList;
begin
  List := TList.Create;
  SQLQuery.SQL.Text := 'SELECT * FROM Workstation';
  SQLQuery.Open;

  while not SQLQuery.EOF do
  begin
    List.Add(SQLQuery.FieldByName('WorkstationID'));
    SQLQuery.Next;
  end;
  Result := List;
end;
Die Funktion soll eine Liste mit den IDs der gefundenen Datensätze zurückliefern (Integer)



Nun benutzt eine Funktion in Model.pas die obige Funktion (Beide Funktionen besitzen leider den gleichen Namen)

Delphi-Quellcode:
function TWorkstationSearch.DBSearch;
var
WsSearch: Model_Database.TWorkstationSearch;
MyWorkstation: TWorkstation;
List: TList;
WsList: TObjectList;
I: Integer;
begin
  I := 0;
  List := TList.Create;
  List := WsSearch.DBSearch(); // Ruft Model_Database.TWorkstationSearch.DBSearch auf
                               // Die Liste sollte nun mit den Datenbank IDs befüllt sein

  while (I<List.Count) do
  begin
    MyWorkstation := TWorkstation.Create(Integer(List[I])); // Ruft den constructor auf
    WsList.Add(MyWorkstation); // <--- Hier wird einer TObjectList ein TWorkstation Objekt übergeben, ka ob das so geht...
    Inc(I);
  end;

  Result := WsList;
end;



// wird in Model.TWorkstationSearch.DBSearch aufgerufen
constructor TWorkstation.Create(DatabaseID: Integer);
begin
  ID := DatabaseID;
  Username := 'testname'+IntToStr(DatabaseID);
  Room := '123';
  FormerUsername := 'alt';
  Documentation := 'nc';
end;








In meiner ViewController.pas möchte ich nun einen Testlauf durchführen:


Delphi-Quellcode:
procedure TMainForm.JvTransparentButton1Click(Sender: TObject);
var
MyWorkstation: Model.TWorkstation;
WsSearch: Model.TWorkstationSearch;
WsList: TObjectList; // <-- Hier will ich alle Workstations in eine Liste packen
I: Integer;
begin
  I := 0;
  WsList := WsSearch.DBSearch();
  while (I<WsList.Count) do
  begin
    MyWorkstation := WsList[I]; // <--- [Pascal Fehler] ViewController.pas(40): E2010 Inkompatible Typen: 'TWorkstation' und 'TObject'
    Showmessage(MyWorkstation.GetUsername);
    Inc(I);
  end;
end;
  Mit Zitat antworten Zitat