Autor Beitrag
McCancey
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 26.12.03 00:23 
Hi!

Folgende Klasse habe ich geschrieben, um ein Textfile in das Feld der Klasse "TcppTokenizer" einzulesen:

ausblenden volle Höhe 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');  //<- ERROR!
  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?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.