Hallo Sebastian,
So ich habe mich jetzt mit dem VirtualTreeView beschäftig, und versuche jetzt da mal weiterzukommen.
Als erstes habe ich mir deine Klasse Parsen kopiert und eine Klasse TreeViewParsen erstellt, um mir die vorhanden nicht zu zerstören.
Das funktioniert auch genau so wie vorher mit Parsen.
Jetzt habe ich versucht in meiner Buffer Verarbeitung von COM1 nur die aktuelle Zeile einlesen, um mir das öffnen der Datei zu sparen, und vorallem das immer wiederholte lesen der gesamten Datei.
Also ist mein Ziel jetzt, Zeile lesen und im VirtualStringTree einzupflegen.
Leider hänge ich schon an folgendem Punkt:
Meine Zeile wird eingelesen und erhält auch den aktuellen Wert.
Delphi-Quellcode:
Procedure TForm1.Bufferverarbeitung;
Var
I :Integer;
Laenge :Integer;
ParserTreeView : TMyBaseParser;
begin
Laenge:=Length(Buffer);
I:=1;
while I < Laenge+1 do
begin
Zeile:=Zeile+Buffer[I];
IF Buffer[i] =#13 then begin
ParserTreeView := TMyParserMB256plus.Create;
ParserTreeView.Parse(Zeile);
TreeViewResult(ParserTreeView);
ParserTreeView.Free;
case RGZentralentyp.ItemIndex of
0 : DatenverarbeitungMB24;
1 : DatenverarbeitungMB48;
2 : DatenverarbeitungMB100;
3 : DatenverarbeitungMB256;
4 : DatenverarbeitungUEZ2000;
5 : DatenverarbeitungBMC1024;
end;
end;
INC(I);
end;
Buffer:='';
end;
Wir hatten schon mal darüber gesprochen, das ich das mit StringReplaced lassen könnte, da diese Funktion in Parsen ja vorhanden ist. Leider funktiioniert das aber nicht.
Wenn ich beim Debuggen in Liste überwachter Ausdrücke mir den Wert von Zeile ansehe, ist das soweit in Ordnung, das immer nur die aktuelle Zeile vorhanden ist.
Natürlich mit den ganzen Steuerzeichen.
Es wird dann auch die Klasse Parsen durchgeführt, und an folgendem Punkt überspringt dann mein Programm
Delphi-Quellcode:
procedure TMyParserMB256plus.Parse(Text: String);
var
CurEntry: ^TMyDataEntry;
CurLine: String;
i1 : integer;
i2 : integer;
temp : String;
begin
Data := Text;
DataPointer := 1;
SetLength(Entries, 0);
SkipTrash;
CurLine := ReadLine;
while DataPointer < Length(Data) do [b]//Hier bleibt mein Programm stehen und Überspringt die gesamte Zuweisung von Entries[/b]
begin
SetLength(Entries, Length(Entries) + 1);
CurEntry := @Entries[High(Entries)];
Was mache ich falsch
Gruß
Jens