Analiza pliku txt

0

Mam małe zaćmienie. Z czym to ugryść!
Mam plik txt gdzie dane są wpisane przykładowo:
---Start
aa
bb
cc
---Koniec
---Start
dd
bb
aa
---Koniec
itd.. Chodzi o to że chcę to pogrupować i zapisać do pliku traktując wpisy pomiędzy ---start i ---koniec jako jeden wiersz oraz odpowiednio posortować czyli:
aa;bb;cc
aa;;cc;dd
przy założeniu że elementy zbioru są zgóry określone (w przykłądzie aa;bb;cc;dd) i jeśli któryś nie występuje wpisany jest sam ';'. Robiłem już coś podobnego kiedyś ale nie mogę odnaleść źródeł, a zależy mi na czasie. Pomóżcie

0

No ale w czym konkretnie Ty masz problem.. - czytasz sobie do tablicy np przez Readln, sortujesz (to chyba znajdziesz... - jest pełno algorytmów) i znowu zapisujesz (Writeln() .. cała filozofia..

0

A możesz dać przykład? Ja to zrobiłem wykorzystując stringlist, ale jest to zrobione bardzo bałaganiarsko (chociaż skutecznie). Z tablicami nie ma doświadczenia. Jeśli rzucisz jakiś kodzik to przynajmniej się czegoś nowego nauczę. I jeszcze jedno: ilośc wierszy pomiędzy sekcjami ---start i ---koniec jest różna. Ja to wykonałem tak:

procedure TForm1.Button1Click(Sender: TObject);
var TempList: TStrings;
I,J:Integer;
FileName,x,Text: string;
begin
TempList := TStringList.Create;
Memo.Lines.Clear;
FileName := 'Plik.txt';
TempList.LoadFromFile(FileName);
for I:= 0 to TempList.Count-1 do
BEGIN
x:='';
J:=I;
Text:= RightStr(TempList.Strings[I],8);
if Text='---Start' then
begin
while TempList.Strings[J+1]<>'---Koniec' do
begin
x:= x+TempList.Strings[J+1]+';';
J:=J+1;
end;
end;
memo.Lines.Add(x);
END;
memo.Lines.SaveToFile('Opis.txt');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
TextOut,TextF:TextFile;
T:String;
Poz:Integer;
begin
AssignFile(TextF,'Opis.txt');
Reset(TextF);
AssignFile(TextOut,'Wynik.txt');
ReWrite(TextOut);
while not Eof(TextF) do
begin
Readln(TextF,T);
if Pos(';',T)<>0 then
begin

 repeat
    Poz:=Pos('  ',T);
     if Poz>0 then
      delete(T,Poz,1);
  until Poz<=0;
  Writeln(TextOut,T);
 end;

end;
closefile(TextF);
closefile(TextOut);

end;

0

a zapis zrealizuj przez INI!!!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1