Odczyt z pliku .txt poszczególnych wartości

0

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?

1

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.

0
Copy
Delete

Wyjdzie nie więcej, niż 10 linijek.

1

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;

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