<pre>
In der Klasse TStringList ist die Methode CustomSort enthalten. Bei einem Sortiervorgang werden dieser
die Liste sowie die nächsten 2 zur Sortierung anstehenden Elemente der Liste übergeben. Die Methode CustomSort
ruft dann eine Funktion auf, die entscheided, welches der beiden Elemente zuerst kommt.
<br>
Folgender Code funktioniert:
<br>
//Externe Funktion
int __fastcall CompareAsString(TStringList* List, int Index1, int Index2);
<br>
class TExtendedStringGrid : public TCustomDrawGrid
{
private:
.............
public:
void __fastcall Sortieren();
....
}
<br>
void __fastcall TExtendedStringGrid::Sortieren()
{
TStringList *sortreihe=new TStringList();
......
sortreihe->CustomSort(CompareAsString);
........
}
<br>
int __fastcall CompareAsString(TStringList* List, int Index1, int Index2)
{
return 0;
}
<br>
Hierbei wurde die Vergleichsfunktion "CompareAsString" außerhalb der Klasse definiert. Ich hätte aber gerne die
Vergleichsfunktion als Methode der Klasse, um Zgriff auf Elemente der Klasse zu haben.
<br>
Folgender Code geht nicht:
<br>
class TExtendedStringGrid : public TCustomDrawGrid
{
private:
int __fastcall CompareAsString(TStringList* List, int Index1, int Index2);
............
public:
void __fastcall Sortieren();
....
}
<br>
void __fastcall TExtendedStringGrid::Sortieren()
{
TStringList *sortreihe=new TStringList();
......
sortreihe->CustomSort(CompareAsString);
........
}
<br>
int __fastcall TExtendedStringGrid::CompareAsString(TStringList* List, int Index1, int Index2)
{
return 0;
}
<br>
Die Fehlermeldung lautet:
<br>
[C++ Fehler] ExtendedStringGrid.cpp(1670): E2034 Konvertierung von 'int (_fastcall * (_closure )(TStringList *,int,int))(TStringList *,int,int)' nach 'int (_fastcall *)(TStringList *,int,int)' nicht möglich
<br>
Hat jemand einen Hinweis, wie ich die Funktion in meine Klasse reinkriege??
</pre>
In der Klasse TStringList ist die Methode CustomSort enthalten. Bei einem Sortiervorgang werden dieser
die Liste sowie die nächsten 2 zur Sortierung anstehenden Elemente der Liste übergeben. Die Methode CustomSort
ruft dann eine Funktion auf, die entscheided, welches der beiden Elemente zuerst kommt.
<br>
Folgender Code funktioniert:
<br>
//Externe Funktion
int __fastcall CompareAsString(TStringList* List, int Index1, int Index2);
<br>
class TExtendedStringGrid : public TCustomDrawGrid
{
private:
.............
public:
void __fastcall Sortieren();
....
}
<br>
void __fastcall TExtendedStringGrid::Sortieren()
{
TStringList *sortreihe=new TStringList();
......
sortreihe->CustomSort(CompareAsString);
........
}
<br>
int __fastcall CompareAsString(TStringList* List, int Index1, int Index2)
{
return 0;
}
<br>
Hierbei wurde die Vergleichsfunktion "CompareAsString" außerhalb der Klasse definiert. Ich hätte aber gerne die
Vergleichsfunktion als Methode der Klasse, um Zgriff auf Elemente der Klasse zu haben.
<br>
Folgender Code geht nicht:
<br>
class TExtendedStringGrid : public TCustomDrawGrid
{
private:
int __fastcall CompareAsString(TStringList* List, int Index1, int Index2);
............
public:
void __fastcall Sortieren();
....
}
<br>
void __fastcall TExtendedStringGrid::Sortieren()
{
TStringList *sortreihe=new TStringList();
......
sortreihe->CustomSort(CompareAsString);
........
}
<br>
int __fastcall TExtendedStringGrid::CompareAsString(TStringList* List, int Index1, int Index2)
{
return 0;
}
<br>
Die Fehlermeldung lautet:
<br>
[C++ Fehler] ExtendedStringGrid.cpp(1670): E2034 Konvertierung von 'int (_fastcall * (_closure )(TStringList *,int,int))(TStringList *,int,int)' nach 'int (_fastcall *)(TStringList *,int,int)' nicht möglich
<br>
Hat jemand einen Hinweis, wie ich die Funktion in meine Klasse reinkriege??
</pre>
Comment