Elementy z StringList do tablicy

0

Witam.
Mam taki problem. Otóż mam stringlista w którym znajduje się parę rzeczy między innymi coś w tym stylu:

 
... tutaj jakies tam rzeczy
dane[0]="cos tam";
dane[1]="blabla";
dane[2]="xyz";

Czy da się w jakiś sposób przypisać do tablicy odpowiednio te stringi? To jest do tab[0] := cos tam, itd.?

1

Zakładając, że tab:Array[] of string i dane:TStringList

tab[0]:=StringList[0]

itd

0

Ok, ale chodzi o to, że tam znajdują się także inne rzeczy przykładowo name = "cos tam";. Ja chciałbym z tego stringlista powyciągać do tablicy tylko to co zaczyna się od dane[n], gdzie n to kolejna liczba.

0

Po pierwsze:
nie możesz zrobić tak:

var
  TS: TStringList;
begin
  TS[2] := 'jakieś dane';
end;

Jeżeli wcześniej nie użyłeś

TS.Add('jakieś dane');

bo wtedy ta linia nie istnieje (za to Add ją tworzy i dodaje tekst).

A co do Twojego drugiego posta, to nie za bardzo wiem o co Ci chodzi. Palesta dobrze mówi, do tablicy możesz przypisać tak

Tablica[1] := 'jakiś tekst';

Odczytać

Zmienna := Tablica[1];

Tak samo jest ze zmiennymi typu TStringList.
Natomiast jeżeli chcesz wszystkie na raz, użyj pętli

var
  I: Integer;
begin
  for I := Low(Tablica) to Hight(Tablica) - 1 do //Pętla od początku, do końca tablicy.
    Tablica[I] := TS[I]; //Do komórki tablicy o indexie I, zostanie przypisana wartość linii I z TS.
end;
0
TomRiddle napisał(a)

Po pierwsze:
nie możesz zrobić tak:

var
  TS: TStringList;
begin
  TS[2] := 'jakieś dane';
end;

No to jest najlepszy sposob, jeżeli chcesz ujrzeć błąd AV.

0

Kurcze, albo ja nie rozumiem albo źle przekazałem to co chciałem :). Może zacznę od początku. Mam sobie jakiś plik którego struktura wygląda powiedzmy tak:

author = "jakis tam";
version = "1.1";
description = "jakis tam opis";
dane[0] = "jakas dana 0";
dane[1] = "jakas dana 1";
dane[2] = "jakas dana 2";
name = "nazwa";

Ten plik z tymi danymi zostaje wczytany do TStringList. Ogólnie to nie wiadomo ile dokładnie będzie tych "dane[n]". Teraz chciałbym juz z tego stringlista w którym znajduje się dokładnie to co wyżej wczytać tylko dane[n] do tablicy (czyli przykladowo "jakas dana 0" bez cudzysłowiów, średników itp. ), żeby potem łatwiej bylo na nich operować (chyba ze da się jakoś ze StringLista?). Czy na pewno da sie to zrobić tak jak podaliście? :) Pytam bo nie za bardzo rozumiem jak by to mialo wygladac w takiej sytuacji. Owszem gdybym miał przypisane stringi do StringList'a za pomocą .add('cos tam') to rozumiem jak to przekopiować do tablicy, ale jeżeli string wygląda dokładnie w taki sposób : "dane[2] = "jakas dana 2";" (cale to, to jest tekst) to juz nie za bardzo wiem. Tym bardziej ze nigdy nie wiadomo w której linijce dokladnie jest szukana dana.

0

Trzeba było tak od razu. Obczaj Pliki *.INI.

0

Ok. Dzięki. Myślę, że coś z tego wyciągnę :)

0

Wykorzystaj IndexOfName oraz Values

{
W pliku musi być:
dane[0]=jakas dana 0
zamiast
dane[0] = jakas dana 0
itd. Kolejność dowolna.
}
var
  i,j:Integer;
  n:string;
//...
  i:=0;
  with StringList do
  begin
    n:='dane['+IntToStr(i)+']';
    j:=IndexOfName(n);
    while j>-1 do
    begin
      tab[i]:=Values[n];
      Inc(i);
      n:='dane['+IntToStr(i)+']';
      j:=IndexOfName(n);
    end;
  end;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.