AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Error: Inkompatible Typen Reguläre Prozedur u Methodenzeiger
Thema durchsuchen
Ansicht
Themen-Optionen

Error: Inkompatible Typen Reguläre Prozedur u Methodenzeiger

Offene Frage von "Real_Thunder"
Ein Thema von BlueStarHH · begonnen am 31. Aug 2007 · letzter Beitrag vom 27. Feb 2008
Antwort Antwort
Seite 3 von 3     123   
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#21

Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze

  Alt 26. Feb 2008, 20:06
Habe mir Diese Thema nun schon 9 mal durchgelsesen.. und steige da einfahc nicht hinter.. währe nett wenn es jemand noch mal füür dumme erklären würde....

An sich habe ich das selbe Problem....

allergings habe ich keinen plan wie die eizelneen sachen aber definiert werden müssen.

also ich möchte auch erreichen das die sortierfunktion in einer klasse ist, damit ich davon mehrere instanzen erzeugen kann...

bekomme ich diese fehlermeldung:
[DCC Fehler] ExtGrid.pas(253): E2009 Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger' der Quelltext sieht folgenermaßenn aus:

Delphi-Quellcode:
Type TExtStrGrid=Class

  SortCol:integer;
  SortDir:integer;

  PicUp:TImage;
  PicDown:TImage;
  LastDummy:boolean;
  SRow:integer;
  mausdown:boolean;
  Function CompareStringGridRows(item1,item2: Pointer):integer;
  Procedure DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
  procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  procedure SortGrid(thegrid: TStringGrid; const col: integer);

  Constructor Create;
  destructor Destroy;


end;

implementation

..
..
..

Function TExtStrGrid.CompareStringGridRows(item1,item2: Pointer):integer;
var c1,c2: ^char;
    n1,n2: integer;
begin
  c1 :=@TStrings(item1).Strings[sortcol][1];
  c2 :=@TStrings(item2).Strings[sortcol][1];
  while (c1^ <>#0) and (c2^ <>#0) do
  begin
    if ((c1^ in ['0'..'9']) and (c2^ in ['0'..'9'])) then
    begin
      n1 :=0;
      n2 :=0;
      while (c1^ in ['0'..'9']) do
      begin
..
..
..

procedure TextStrGrid.SortGrid(thegrid: TStringGrid; const col: integer);
var rows: TList;
    id,i,j: integer;
    tmp: TStrings;
    tmp_row:string;
begin
try
  rows :=TList.Create;
  rows.Capacity :=thegrid.RowCount-thegrid.fixedrows;
  for i:=theGrid.fixedrows to thegrid.RowCount -1 do
  begin
    tmp :=TStringList.Create;
    for j:=0 to thegrid.ColCount-1 do
      tmp.AddObject(thegrid.cells[j,i],thegrid.Objects[j,i]);
      thegrid.Rows[i].Clear;
      rows.Add(tmp);
    end;
    rows.Sort(CompareStringGridRows); // Hier die Fehlermeldung..
    for i:=thegrid.fixedrows to thegrid.RowCount -1 do begin
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze

  Alt 26. Feb 2008, 20:09
Function TExtStrGrid.CompareStringGridRows(item1,item2: Pointer):integer; So ist das eine Methode von TExtStrGrid.
Function CompareStringGridRows(item1,item2: Pointer):integer; stdcall; Und so ist das eine Funktion. Nun klarer?
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
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#23

Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze

  Alt 26. Feb 2008, 22:28
Zitat von DeddyH:
Function TExtStrGrid.CompareStringGridRows(item1,item2: Pointer):integer; So ist das eine Methode von TExtStrGrid.
Function CompareStringGridRows(item1,item2: Pointer):integer; stdcall; Und so ist das eine Funktion. Nun klarer?

Hilft mir nicht wirklick weiter...
wenn ich nur den Stdall hinter Setzte bekomme ich die Fehlermeldung:
[DCC Fehler] ExtGrid.pas(253): E2009 Inkompatible Typen: 'Unterschiede in der Aufrufkonvention' Ich werde aus den Ganzen kram nicht schlau...

Wie binde ich den Assembler Code richitg ein ? ...
Im Moment komme ich mir richtig doof vor .....
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze

  Alt 27. Feb 2008, 09:20
Delphi-Quellcode:
Type TExtStrGrid=Class

  SortCol:integer;
  SortDir:integer;

  PicUp:TImage;
  PicDown:TImage;
  LastDummy:boolean;
  SRow:integer;
  mausdown:boolean;
// Function CompareStringGridRows(item1,item2: Pointer):integer;
  Procedure DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
  procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  procedure SortGrid(thegrid: TStringGrid; const col: integer);

  Constructor Create;
  destructor Destroy;


end;

implementation

..
..
..

Function {TExtStrGrid.}CompareStringGridRows(item1,item2: Pointer):integer;
var c1,c2: ^char;
    n1,n2: integer;
begin
  c1 :=@TStrings(item1).Strings[sortcol][1];
  c2 :=@TStrings(item2).Strings[sortcol][1];
  while (c1^ <>#0) and (c2^ <>#0) do
  begin
    if ((c1^ in ['0'..'9']) and (c2^ in ['0'..'9'])) then
    begin
      n1 :=0;
      n2 :=0;
      while (c1^ in ['0'..'9']) do
      begin
..
..
..

procedure TextStrGrid.SortGrid(thegrid: TStringGrid; const col: integer);
var rows: TList;
    id,i,j: integer;
    tmp: TStrings;
    tmp_row:string;
begin
try
  rows :=TList.Create;
  rows.Capacity :=thegrid.RowCount-thegrid.fixedrows;
  for i:=theGrid.fixedrows to thegrid.RowCount -1 do
  begin
    tmp :=TStringList.Create;
    for j:=0 to thegrid.ColCount-1 do
      tmp.AddObject(thegrid.cells[j,i],thegrid.Objects[j,i]);
      thegrid.Rows[i].Clear;
      rows.Add(tmp);
    end;
    rows.Sort(@CompareStringGridRows); // Hier die Fehlermeldung..
    for i:=thegrid.fixedrows to thegrid.RowCount -1 do begin
Versuch es mal so.
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
Antwort Antwort
Seite 3 von 3     123   


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:47 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