Analiza danych z pliku txt

0

Witam. Muszę zrobić pewien program w delphi, a że jestem nieco nieobeznany, proszę o pomoc.

Chodzi o to, że mam zrobić bazę samochodów, mają posiadać różne parametry.
Bazę będę musiał góry jakąś zrobić - i teraz zastanawiam się nad pewną rzeczą. Czy łatwiej będzie odczytywać dane z .txt jeśli będą w formie:

Nazwa samochodu
Klasa
Parametr 1
Parametr 2
Parametr 3
Nazwa samochodu2
Klasa
Parametr 1
Parametr 2
Parametr 3

czy

Nazwa samochodu Klasa Parametr1 Parametr2 Parametr3
Nazwa samochodu2 Klasa Parametr1 Parametr2 Parametr3

Kolejna sprawa. W jaki sposób mam odczytać dane z takiego pliku i władować je do jakiejś tablicy?
Po trzecie. Mam zrobić, by każdy parametr był oceniony binarnie (Dobry/Zły) według jakichś tam moich własnych kryteriów. Pomyślałem, że można by do tego zrobić drugą tablicę i tam władować jedynki i zera. No i teraz tak: jak po kolei mam wybrać każdą komórkę pierwszej tablicy i wsadzić wynik do odpowiadającej komórki drugiej tablicy?

1

Na pewno łatwiej byłoby odczytywać wersję pierwszą, lecz druga jest bardziej czytelniejsza.
Co wolisz.
Jeżeli wybrałbyś wersją drugą, to musiałbyś użyć funkcji explode (tzn.napisać/ściągnąć ją, ponieważ nie ma jej domyślnie).

0

Okej, powiedzmy że wiem o co chodzi (pisałem w php wiele rzeczy, więc wiem na czym na funkcja mniej więcej polega). Dajmy na to, że mam już tablicę ze wszystkimi potrzebnymi danymi. Jak mam teraz zrobić, by z parametrów wybierało te ilościowe (wielkość baku, max prędkość) i oceniało je binarnie według jakiegoś tam parametru (np. max prędkość conajmniej 200km/h)? Potem według tego chciałbym to na przykład posortować.

0

podstawowe pytanie: czy to musi byc plik tekstowy, w takim znaczeniu ze wszystkie dane musisz zamieniac na postac tekstowa i "recznie" zapisywac do pliku?
bo jesli nie, to powinienes uzyc plikow typowanych (ostatecznie je tez mozesz zapisac z formatem *.txt :D )

0

Na razie nie muszę nic zapisywać, tylko odczytywać gotowe dane. Zapisać będę musiał do txt potem wyniki (filtrowania, sortowania itd).

0

Ja w takich przyp. stosuję metodę drugą. Wtedy cały rekord danych mam w jednej linii pliku tekstowego i łatwo go podglądać/edytować w jakimś notatniku. Jako separator pól wybieram jakiś znak, który NA PEWNO nie będzie występował w danych, np. tabulator (#9).

var
  f:TextFile;
  dane:array of string of string;
  i,j,k:Integer;
  s:string;

//...
//Zapis do pliku
  for i:=0 to High(dane) do
  begin
    for j:=0 to High(dane[i]) do Write(f,dane[i,j],#9);
    WriteLn(f);
  end;

//Odczyt z pliku
  i:=0;
  SetLength(dane,i);
  while not Eof(f) do
  begin
    SetLength(dane,i+1);
    j:=0;
    SetLength(dane[i],j);
    ReadLn(f,s);
    k:=Pos(#9,s);
    while k>0 do
    begin
      SetLength(dane[i],j+1);
      dane[i,j]:=Copy(s,1,k-1);
      Delete(s,1,k);
      k:=Pos(#9,s);
      Inc(j);
    end;
    Inc(i);
  end; 

Pisane z pamięci więc mogą być błędy.

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