![]() |
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
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:
Delphi-Quellcode:
der Quelltext sieht folgenermaßenn aus:
[DCC Fehler] ExtGrid.pas(253): E2009 Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'
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 |
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Delphi-Quellcode:
So ist das eine Methode von TExtStrGrid.
Function TExtStrGrid.CompareStringGridRows(item1,item2: Pointer):integer;
Delphi-Quellcode:
Und so ist das eine Funktion. Nun klarer?
Function CompareStringGridRows(item1,item2: Pointer):integer; stdcall;
|
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Zitat:
Hilft mir nicht wirklick weiter... wenn ich nur den Stdall hinter Setzte bekomme ich die Fehlermeldung:
Delphi-Quellcode:
Ich werde aus den Ganzen kram nicht schlau...
[DCC Fehler] ExtGrid.pas(253): E2009 Inkompatible Typen: 'Unterschiede in der Aufrufkonvention'
Wie binde ich den Assembler Code richitg ein ? ... Im Moment komme ich mir richtig doof vor ..... |
Re: Error: Inkompatible Typen Reguläre Prozedur u Methodenze
Delphi-Quellcode:
Versuch es mal so.
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz