Mam pewien problem. Potrafię zapisywać/odczytywać pliki .txt w Delphi. Tylko mam problem z jednym. Jeżeli mam taki plik .txt: a;b;c;d;e;f nie wiem, jak zapisać litery do poszczególnych zmiennych (cały plik do jednej zmiennej umiem). Separatory (;) mogą być dowolne (ale zawsze takie same)(podałem tylko przykład). O czym mam poczytać, aby się nauczyć, co za to jest odpowiedzialne?
http://delphi.about.com/od/adptips2005/qt/parsedelimited.htm
Może nowsze Delphi ma już do tego wybudowane funkcje... tego nie wiem. Ale np. w Pythonie nie trzeba pisać własnego parsowania:
>>> a="a;b;c;d;e;f"
>>> lista=a.split(';')
>>> print lista[0]
a
>>> print lista[2]
c
>>> print lista
['a', 'b', 'c', 'd', 'e', 'f']
Jak piszesz samemu, to i tak ogólna zasada jest prosta. Jak masz już tekst w stringu, to jedziesz po wszystkich znakach w pętli i jeśli dany znak nie jest średnikiem, to doklejasz go do pustego stringa. Jak napotkasz średnik, albo koniec pliku/znak nowej linii to dodajesz zapełnionego stringa do tablicy/listy i zerujesz tego stringa (str='';) i tak zabawa w kółko, aż do końca pliku. Mam nadzieję, że zrozumiesz to co napisałem.
Copy
Delete
Wyjdzie nie więcej, niż 10 linijek.
Można na przykład wykorzystać taką funkcję jak poniżej, a poczytać należy o podstawach czyli Pos, Copy, Delete i tym podobne.
function Explode(Str : string; Separator : string) : TStringList;
var
X : integer;
begin
Result := TStringList.Create;
X := Pos(Separator, Str);
while X > 0 do
begin
Result.Add(Copy(Str, 1, X - 1));
if X <= Length(Str) then
begin
Str := Copy(Str, X + Length(Separator), Length(Str));
end;
X := Pos(Separator, Str);
end;
if (Length(Str) > 0) then
begin
Result.Add(Str);
end;
end;