Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - "Abstract Error" bei TStrings
McCancey - Fr 26.12.03 00:23
Titel: "Abstract Error" bei TStrings
Hi!
Folgende Klasse habe ich geschrieben, um ein Textfile in das Feld der Klasse "TcppTokenizer" einzulesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| unit cppTools;
interface
uses Classes;
type TcppTokenizer = class public Zeilen: TStrings; constructor create(); procedure ReadFile(filename:String); end;
implementation
constructor TcppTokenizer.create(); begin inherited Create(); Zeilen := TStrings.Create; end;
procedure TcppTokenizer.ReadFile(filename:String); var f: Textfile; linebuffer: string; begin AssignFile(f, filename); reset(f); Zeilen := TStrings.create(); Zeilen.Add('test'); repeat readln(f, linebuffer); Zeilen.Add(linebuffer); until (eof(f)); closefile(f); end; |
Folgendes Problem (ich bin leider ziemlich raus aus delphi, wahscheinlich simple Sache):
In der markierten Zeile stritt ein "Abstract error" auf, auch wenn offenbar das Erstellen des TStrings funktioniert (wenn ich da einen Stoppunkt setze sehe ich dass "Zeilen=()" ist). Woran liegt dieser Fehler? Irgendwas falsch definiert?
Delete - Fr 26.12.03 00:32
TStrings ist eine Klasse mit reinen abstarkten Methoden. Also eigentlich nur methodenrümpfen ohne Körper. TStrings dient ledilich als Basisklasse für anderer Klassen, wie zum Beispiel TStringList. Bei diesen abgeleiteten Klassen sind dann die abstrakten Methoden von TStrings auch mit Code gefüllt. Ergo, nimm für deine Zwecke TStringlist.
McCancey - Fr 26.12.03 00:44
Achso, na denn... so klappts mit StringList, danke für die schneller Antwort!
Aber bei TMemo z.B. gibt#s doch auch das Feld Lines, das als TStrings angegeben wird... ist das dann in der Klasse noch mal extra implementiert? Oder warum heisst das dann da auch TStrings, wo das doch eine abstrakte Klasse ist?
McCancey - Fr 26.12.03 01:36
weils so schön war noch ne Frage hinterher:
Wenn ich eine aufzählung erstelle nach dem Schema
type LISTE = (blau, gruen, rot);
geht das ja prima, aber nun brauche ich den Wert "class" in dieser Liste, was delphi natürlich mit einer Fehlermeldung quitiert wenn ich das so da rein schreibe. Gibt es eine andere Methode eine Liste von Strings zu definieren, auf die später geprüft werden soll, ob ein String in dieser Liste ist oder nicht?
Delete - Fr 26.12.03 02:34
Neue Frage, neuer Thread.
Lines von TMemo ist von TStrings abgeleitet. An dieser Stelle sind dann auch die Methoden und Eigenschaften implementiert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!