Turbo Pascal wczytywanie elementów z pliku tekstowego

Odpowiedz Nowy wątek
2011-07-20 01:21
Mateusz K
0

Witam.
Mam pewien problem. Zdałem do 3 LO. Uczę się Turbo Pascala od września. Intensywniej niż tego każą w szkole. Przerabiam zadania z matury z informatyki z tego roku i mam pewien dylemat. Mam plik osoby.txt (załącznik). Są tam różne dane oddzielane średnikiem, np. ' o001;Adam;Roztoka;501358358 '. Moje pytanie brzmi: Czy da się jakoś ładnie to porozdzielać w Turbo Pascalu nie pisząc wielkiej procedury iż na maturze nie ma aż tak wiele czasu?tj. do jednej zmiennej/tablicy id[i]=001, imie[i]=Adam itd.? oraz drugie pytanie: Czy czasem nie lepiej tego zrobić za pomocą MS Office Excel lub innego narzędzia Pakietu MS Office?

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-07-20 03:45
50h
0

Myślę, że jeśli przeczytasz to http://turbopascal.helion.pl/r-19.htm , to rozwiązanie samo Ci sie nasunie na myśl.

Pozostało 580 znaków

2011-07-20 08:29
0
Mateusz K napisał(a)

Czy da się jakoś ładnie to porozdzielać w Turbo Pascalu nie pisząc wielkiej procedury

Pokaż co napisałeś.

Pozostało 580 znaków

2011-07-20 11:25
0

Do takich celów najlepiej pasuje prosta funkcja:

function Parse(var Str:String;const Delimeter:String):String;
var P:Integer;
begin
  P:=Pos(Delimeter,Str);
  if P>0 then
  begin
    Result:=Copy(Str,1,P-1);
    Delete(Str,1,P);
  end
  else
  begin
    Result:=Str;
    SetLength(Str,0);
  end;
end;

Użycie:

ReadLn(plik,Line);
tb[i].id:=StrToInt(Parse(Line,';'));
tb[i].Imie:=Parse(Line,';');
tb[i].Nazwisko:=Parse(Line,';');
tb[i].Indeks:=StrToInt64(Parse(Line,';'));

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2011-07-20 16:40
0

@Mateusz K: zobacz sobie na kody w załączniku mojego posta w wątku pod adresem: http://4programmers.net/Forum/Off-Topic/172532-matura_z_informatyki?start=50 i będziesz wiedział jak to zrobić pod Delphi 7. Również pod FPC można to zrobić, ja tam sobie ułatwiłem zadanie i skorzystałem z klasy TStringList oraz wygoglowanej kiedyś funkcji Explode. Dopuszczenie Turbo Pascala jako narzędzia, w którym mozna pisać na maturze uważam za nieporozumienie, minimum to powinien być FPC, bo można w nim użyć konstrukcji znanych z Delphi i można również otrzymać pliki wykonywalne kompatybilne z Windowsem. Jednak nie można raczej pod FPC wygodnie pracować na pełnym ekranie pod Windows 7, dlatego polecal bym najwygodniejsze - według mnie - z dopuszczalnych narzędzi czyli Delphi 7. Jeżeli używasz Windows 7 i robisz to z głową to można wyłaczyć w ogóle upierdliwe UAC i nie mieć żadnych problemów z tworzeniem plików pod Delphi 7.


Pozostało 580 znaków

2011-07-20 18:06
0

No właściwie lepiej to zrobić w excelu jeśli masz taką możliwość bo wystarczy zmienić rozszerzenie na .csv i dwa razy kliknąć...


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<

Pozostało 580 znaków

2011-07-20 22:56
MateuszK
0

@olesio: Dzięki, pomogłeś mi. Właśnie takiej odpowiedzi oczekiwałem, a nie typu: 'Tu masz poradnik, algorytm sam przyjdzie Ci do głowy' iż to raczej pewne. Ale liczyłem na poradę, która coś wniesie:)

Pozostało 580 znaków

2011-07-23 00:01
Mateusz K
0
program wyszukiwanie_usuwanie+Pascal;
uses Crt;
var
   zdanie: String;
   i,j: Byte;
BEGIN
     Clrscr;
     zdanie:='1;tak;88;nowak;';
     for j:=1 to 2 do
     begin
     i:= Pos(';',zdanie);
     Delete(zdanie,1,i);
     Writeln(zdanie);
     end;
     i:=Pos(';',zdanie);
     Delete(zdanie,i,length(zdanie)-i);
     Writeln(zdanie);
END. 

Sam wykombinowałem w parę minut i jest krótka. A spodziewałem się dłuższej. @50h: Zmotywowałeś mnie.
Wstawiam dla tych, co kiedyś szukać będą. Na maturę też się nadaje. Pisałem w Turbo Pascalu.

Pozostało 580 znaków

2011-07-23 00:04
0
Mateusz K napisał(a)

Wstawiam dla tych, co kiedyś szukać będą. Na maturę też się nadaje. Pisałem w Turbo Pascalu.

no muszę Cię zmartwić bo posty z tego działu znikają po kilkunastu dniach
a poza tym zajęło Ci to 5 minut a napisałeś po 48 godzinach ;)


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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