ich muss Sourcecode files für eine Weiterverarbeitung parsen, bzw. umformatieren und hierbei 2 Anforderungen erfüllen :
- jeder Befehl wird durch ein ';' abgeschlossen, der Befehl kann über eine beliebige Anzahl von Textzeilen aufgeteilt sein, schreibe den Befehl in eine Zeile = Item einer Stringlsite
- behalte Kommentare in der ursprünglichen Formatierung bei, es gibt einzeilige und mehrzeilige Kommentare
hier meine aktuelle noch nicht fertige Lösung:
Delphi-Quellcode:
procedure CopyCommentLines(StartStr, StopStr: string; FileStr: string;
var ReadPos: Integer; FormatedFile: TStringlist);
begin
if ( i < Length(FileStr)- 2 ) then
begin
end;
end;
procedure LoadasFormatedNetlistFile(Filename: String; netlist: TStringlist;
SeparatorChar: Char);
var
tempstr: String;
oneline: String;
tempChar: Char;
i: Integer;
begin
///
/// read a complete file as TStringlist and assign .text as function result here
///
tempstr := LoadStringFromFile(Filename);
oneline := '';
i := 0;
repeat
///
/// direct copy all comment lines to the clean file
///
CopyCommentLines('/*', '*/', tempstr, i, netlist);
CopyCommentLines('//', #13#10, tempstr, i, netlist);
///
/// copy all chars until separator into one line
///
tempChar := tempstr[i];
if (tempChar <> #10) and (tempChar <> #13) then
begin
if tempChar <> SeparatorChar then
oneline := oneline + tempChar
else
begin
oneline := oneline + tempChar;
netlist.Add(oneline);
oneline := '';
end;
end;
inc(i);
until (i >= Length(tempstr));
end;
Frage :
a) gibt es für diese Aufgabe eine einfachere Lösungsmethode
b) in Delphi gibt es keine fertige Methode für das Ausscheniden eines Strings mit start und stop Suchstring ?