Odczyt plików, tworzenie struktury XML

0

Witam

Od razu na wstępnie nadmienię, iż programowaniem się nie zajmuję i zajmować nie będę. Jestem studentem [prawie] 4 roku Elektrotechniki, a zawodowo zajmuję się projektowaniem zabezpieczeń na stacjach elektroenergetycznych. Na forum pojawiłem się z problemem zrealizowania projektu w Pascalu. W ramach poprawy przedmiotu musiałem się nauczyć od zera Pascala. Jako, że zupełnie nie jest mi to potrzebne, zamiast męczyć się samemu, zleciłem to komuś, kto ostatecznie tydzień przed oddaniem projektu stwierdził, że nie potrafi tego zrobić. Od wczoraj więc sam to robię.

A teraz konkretnie, co próbuję zrobić:
W pliku .dat zapisane są dane w postaci tablicy dwuwymiarowej (w wierszach wartości oddzielone są przecinkami). Potrzebuję odczytać ten plik zapisując jednocześnie wartości do tablicy, tak bym później mógł mieć dostęp do tego.
Odczytać każdą linię już potrafię. Wiem, że jest opcja ExtractString, która podzieli mi wiersz wg separatorów, natomiast mam problem ze zrealizowaniem tego. Jako, że Pascala poznałem wczoraj nie jest to chyba zaskoczenie.

program test1;

var
    s:string;
    plik:Text;
    NOWE:TStrings;
begin
    NOWE := TStringList.Create();
    Assign(plik,'plik.txt');
    Reset(plik);
    while not eof(plik) do
    begin
      readLN(plik,s);
      WriteLN(s);
      ExtractStrings(',',[' '], s, NOWE);
    end;
    Close(plik);
    readLN;
end. 
0

Przede wszystkim powinieneś podać którego Pascala używasz i w jakim środowisku pracujesz nad tym projektem; Dla różnych środowisk i różnych kompilatorów będą różne (czasem podobne) rozwiązania;

W pliku .dat zapisane są dane w postaci tablicy dwuwymiarowej (w wierszach wartości oddzielone są przecinkami).

Czy ten plik ma strukturę zgodną z formatem CSV?

0

Używam najnowszej wersji FreePascala. Ograniczeniem dla mnie jest również brak możliwości korzystania ze środowiska Delphi.
.dat równie dobrze mogłoby być zwykłym .txt. Dane wyglądają w ten sposób:

1, 0, 3.53, 5.23, 0, 1, 0, 0
2, 20, 3.93, 6.32, 0, 0, 1, 1
3, 40, 4.34,  7.23, 1, 0, 1, 1
4, 60, 3.92, 9.32, 1, 0, 1, 0
2

Mam nadzieję, że korzystasz z Lazarusa (IDE dla FPC), a nie z "FPC-poor-editor"...

Do obsługi plików CSV jest przewidziana biblioteka CsvDocument, więc pobierz sobie ją i skorzystaj; W paczce do pobrania jest też demówka - będziesz wiedział co i jak używać.

0

Zrobiłem wszystko to co poradziłeś. Udało mi się wczytać jeden plik do tablicy, idealnie. Aczkolwiek w drugim pliku, zdecydowanie większym (rozmiaru ok. 10000x100) nie chce mi wczytać danych - wyświetla się błąd "Project projekt1 raised exception class 'External: SIGSEGV'.

0

Pokaż kod, bo nie potrafię wróżyć z fusów.

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