Einzelnen Beitrag anzeigen

bl3nder

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

E2010 Inkompatible Typen: 'Integer' und 'Pointer'

  Alt 8. Aug 2008, 16:12
Hallo,


Ich versuch mich grade an einem Model View Controller. Hierzu habe ich unter anderem 2 Units die mit einander kommunizieren.

Model.pas
Model_Database.pas


Model_Database.pas sieht vereinfacht so aus:


Delphi-Quellcode:
unit Model_Database;

interface

uses
  ZConnection,ZDataset,DBgrids, ZAbstractRODataset,
  ZAbstractDataset,ZSysUtils,ZPlainMySqlDriver,DB,Classes;

type

  TDatabase = class(TObject)
  private
    SQLQuery: TZQuery;
    DataSource: TDataSource;
    SQLConnection: TZConnection;
  public
    constructor Create();
    function DBSearch: TList; virtual; abstract;
    //...
  end;





  TWorkStationSearch = class(TDatabase)
  private
  public
    function DBSearch: TList; override;
  end;




implementation

uses Model;


//...


function TWorkstationSearch.DBSearch: TList; override;
var List: TList;
begin
  SQLQuery.SQL.Text := 'SELECT * FROM Workstations';
  SQLQuery.Open;

  while not SQLQuery.EOF do
    List.Add(SQLQuery.FieldByName('WorkstationID'));

  Result := List;
end;



end.


Model.pas sieht verkürtzt so aus

Delphi-Quellcode:

unit Model;

interface

uses
  ZConnection,ZDataset,DBgrids, ZAbstractRODataset,
  ZAbstractDataset,ZSysUtils,ZPlainMySqlDriver,DB,Contnrs,Classes,SysUtils,
  Model_Database;

type
  

  TMain = class(TObject)
  private
  public

    function DBSearch(): TObjectList; Virtual; Abstract;
    //...
  end;


//...


  TWorkstation = class(TMain)
  private
    ID: Integer;
    Username: String;
    Room: String;
    FormerUserName: String;
    Documentation: String;

  public
    constructor Create(DatabaseID: Integer);
    destructor Destroy();


    function GetUsername: String;
    
    //...

  end;




  TWorkstationSearch = class(TMain)
  private
  public
    function DBSearch(): TObjectList; Override;
  end;




implementation

constructor TWorkstation.Create(DatabaseID: Integer);
begin
  ID := DatabaseID;
  Username := 'testname'+IntToStr(DatabaseID);
  Room := '123';
  FormerUsername := 'alt';
  Documentation := 'nc';
end;




function TWorkstation.GetUsername;
begin
  Result := Username;
end;



function TWorkstationSearch.DBSearch;
var WsSearch: Model_Database.TWorkstationSearch;
var Workstation: TWorkstation;
var List: TList;
var WsList: TObjectList;
var I: Integer;
begin
  I := 0;
  List := WsSearch.DBSearch();
  while (I<List.Count) do
  begin
    Workstation.Create(List[I]); // <------------------ FEHLERZEILE
    WsList.Add(Workstation);
    Workstation.Destroy;
    Inc(I);
  end;

  Result := WsList;
end;



end.


Beim Kompilieren von Model.pas sagt er mir dann den folgenden Fehler:

Zitat:
[Pascal Fehler] Model.pas(279): E2010 Inkompatible Typen: 'Integer' und 'Pointer'


Wieso ist die Liste nicht eine Liste von Integern ? So habe ich es doch in obigen Funktion deklariert. Oder etwa nicht ?
  Mit Zitat antworten Zitat