AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi E2010 Inkompatible Typen: 'Integer' und 'Pointer'
Thema durchsuchen
Ansicht
Themen-Optionen

E2010 Inkompatible Typen: 'Integer' und 'Pointer'

Ein Thema von bl3nder · begonnen am 8. Aug 2008 · letzter Beitrag vom 12. Aug 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#11

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

  Alt 12. Aug 2008, 11:07
Hi,

da der Code gekürzt ist, weiß ich nicht, ob Du zu viel gekürzt hast oder ob es einfach fehlt.

Delphi-Quellcode:
while not SQLQuery.EOF do
    List.Add(SQLQuery.FieldByName('WorkstationID'));
Fehlt hier nicht noch ein SQLQuery.Next?
  Mit Zitat antworten Zitat
bl3nder

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

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

  Alt 12. Aug 2008, 11:11
Danke das hat unter anderem auch noch gefehlt


Die DBSearch funktion sieht mittlerweile so aus


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

  Result := WsList;
end;
Nun bringt er mir diesen Fehler
Zitat:
[Pascal Fehler] ViewController.pas(40): E2010 Inkompatible Typen: 'TWorkstation' und 'TObject'
Mir ist der Fehler schon bewusst, ich weiß allerdings nicht wie ich das jetzt löse. Ich kann ja nicht eine WsList: TWorkstationList anlegen...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#13

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

  Alt 12. Aug 2008, 11:22
*Uhh*, Listen als Funktionsrückgabewert, Funktionen ganz ohne Rückgabewert, fehlendes Instanziieren von Listen... ich steig da nicht mehr richtig durch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#14

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

  Alt 12. Aug 2008, 11:48
Hallo zusammen,
Zitat:
begin
Workstation := TWorkstation.Create(Integer(List[I]));
WsList.Add(Workstation);
Workstation.Destroy;
Inc(I);
end;
wenn ich das richtig verstehe wird da eine "Workstation" erstellt, in eine Liste gepackt, und danach gelöscht.
D.h die Einträge der Liste zeigen irgendwo in die Botanik, oder hab ich da irgendetwas falsch verstanden?

Und ansonsten geht es doch um eine Liste von "Workstation-ID"s, da damit nicht gerechnet werden muß/darf, würde ich die als Strings in eine TStringlist packen und gut ist. Doppelte Einträge kann man prima durch sortieren und vergleichen finden, oder im Vorfeld bei der Abfrage durch
Delphi-Quellcode:
Select distinct * from..
oder
Select distinct WorkstationID from..
.

edit:
Die restlichen Informationen (Username,Room etc.) erst abholen wenn ich weiß was ich brauche, das verringert den Traffic doch ganz schön


Gruß
K-H
  Mit Zitat antworten Zitat
bl3nder

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

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

  Alt 12. Aug 2008, 11: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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#16

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

  Alt 12. Aug 2008, 12:03
Nochmal:
Zitat:
function TWorkstationSearch.DBSearch;
Die Funktion hat keinen Rückgabewert.
Zitat:
WsList.Add(MyWorkstation); // <--- Hier wird einer TObjectList ein TWorkstation Objekt übergeben, ka ob das so geht...
Ohne ein WsList := TObjectList.Create davor wohl eher nicht
Zitat:
MyWorkstation := WsList[I]; // <--- [Pascal Fehler] ViewController.pas(40): E2010 Inkompatible Typen: 'TWorkstation' und 'TObject'
MyWorkstation := WsList[I] as Model.TWorkstation; // der Fehler sollte nun weg sein Aber ich würde die Listen als Parameter übergeben, das mindert die Gefahr von Speicherlecks.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jottkaerr

Registriert seit: 2. Jul 2007
Ort: Tuttlingen
81 Beiträge
 
Delphi 10.1 Berlin Professional
 
#17

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

  Alt 12. Aug 2008, 13:53
Zitat von DeddyH:
Nochmal:
Zitat:
function TWorkstationSearch.DBSearch;
Die Funktion hat keinen Rückgabewert.
Das ist nicht ganz richtig. Nach einer Vorwärts-Deklaration -- und nicht nur eine forward-Deklaration, sondern auch die Nennung einer Methode innerhalb einer Klassendeklaration und jede Deklaration im interface-Teil stellen eine solche dar -- kann die Angabe der Parameter und Rückgabewerte bei der Implementierung entfallen. Ausnahmen sind allerdings überladene Prozeduren, Funktionen und Methoden; hier sind die Parameter und Rückgabewerte notwendig, damit der Compiler sie auseinander halten kann. Beispiel:

Delphi-Quellcode:
unit Test;

interface

type
  TMyClass = class(TObject)
    function FuncOne(a: Integer): Integer;
    procedure ProcOne(const s: string);
  end;

function FuncTwo(const x, y: Double): Double;

implementation

uses
  Dialogs, SysUtils;

function FuncThree(const s: string): string; forward;

function TMyClass.FuncOne;
begin
  Result := 2 * a;
end;

procedure TMyClass.ProcOne;
begin
  ShowMessage(s);
end;

function FuncTwo;
begin
  Result := x + y;
end;

function FuncThree;
begin
  Result := UpperCase(s);
end;

end.
Jürgen Krämer
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#18

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

  Alt 12. Aug 2008, 14:01
Schau an, das war mir neu. Danke für die Erläuterung
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
bl3nder

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

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

  Alt 12. Aug 2008, 14:13
Danke für eure Hilfe !
Zumindest mit einer Stringlist hat es jetzt funktioniert. Nun habe ich noch Probleme mit der Zeos Komponente, dazu werde ich einen anderen Thread erstellen (hoffentlich ist das ok..)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz