Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Abstact Error: Was soll mir das sagen? Wo liegt der Fehler? (https://www.delphipraxis.net/27067-abstact-error-soll-mir-das-sagen-wo-liegt-der-fehler.html)

yankee 3. Aug 2004 20:12


Abstact Error: Was soll mir das sagen? Wo liegt der Fehler?
 
Hallo, ich habe einmal diese Funktion:
Delphi-Quellcode:
function TMainForm.getrandcards(const Anzahl:integer; var Karten:TStrings):string;
var i,rand:integer;
begin
    randomize;
    for i:=1 to Anzahl do
    begin
        if i >1 then result :=result +';';
        rand :=random(Karten.Count)+1;
        result :=result +Karten.Strings[rand];
        Karten.Delete(rand);
    end;
end;
die ist dafür da Karten (von Skat) zu geben. Die Karten sind in TStrings. Pro Zeile eine Karte. Diese Funktion soll jetzt eine Anzahl Karten in einem String duch Semikolons getrennt geben. Das ist die procedure aus der die Funktion aufgerufen wird:
Delphi-Quellcode:
procedure TMainForm.Austeilen;
var Karten :TStrings;
begin
    Karten :=TStrings.Create;
    Karten.LoadFromFile(ExtractFilePath(ParamStr(0))+'daten\Karten.txt');
    showmessage(getrandcards(10, Karten));
end;
Um zu sehen ob es funzt lasse ich das Ergebniss von 10 zufälligen Karten in einer showmessage geben. Zu der Showmessage kommt es aber nicht, weil es an der Stelle ein "Abstract Error" gibt. Woran kann das Liegen?

Robert_G 3. Aug 2004 20:16

Re: Abstact Error: Was soll mir das sagen? Wo liegt der Fehl
 
Zitat:

Zitat von yankee
Karten :=TStrings.Create;[/delphi]

Standard abtract-error #1 ;)

TStrings ist eine abstrakte Klasse -> du kannst keine Instanz von ihr erzeugen.
Du kannst sie aber mit dem Konstruktor von TStringList instanzieren.

NicoDE 3. Aug 2004 20:18

Re: Abstact Error: Was soll mir das sagen? Wo liegt der Fehl
 
Zitat:

Zitat von yankee
Karten :=TStrings.Create;
Karten.LoadFromFile

Wenn ich mich nicht irre (keine Delphi-Hilfe zur Hand), dann ist TStrings eine abstrakte Basisklasse und hat noch keine Implementation von LoadFromFile.
Versuchs mit einer von TStrings abgeleiteten Klasse die LoadFromFile implementiert (zum Beispiel TStringList).

Gruss Nico

DataCool 3. Aug 2004 20:22

Re: Abstact Error: Was soll mir das sagen? Wo liegt der Fehl
 
Hi,

schonmal per Debugger in die Function rein debugged ? Wo kommt der Fehler genau ?
Ich bin mir jetzt aber nicht sicher, aber ich würde die Zeile :

result :=result +Karten.Strings[rand]; gegen

result :=result +Karten[rand]; austauschen.

Und wie weiter oben schon gesagt :

das :

Karten :=TStrings.Create;

mit

Karten := TSTringList.create; //erzeugen

yankee 3. Aug 2004 20:23

Re: Abstact Error: Was soll mir das sagen? Wo liegt der Fehl
 
Danke... mit
Delphi-Quellcode:
Karten :=TStringList.Create;
geht es....


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 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