ahoj,
muže někdo prosím nepogramátorovi poradit, jak číst z .txt souboru data násl. formátu?
5.3.2009,02:40,1.2607,1.2620,1.2607,1.2615,70
5.3.2009,02:50,1.2614,1.2615,1.2598,1.2602,69
5.3.2009,03:00,1.2601,1.2611,1.2601,1.2610,47
(datum,čas,4xreal,integer)
Fórum › Pascal
čtení ze souboru
deklaruješ proměnou f typu text (var f:text;)
dále deklaruješ jednorozměrné pole o počtu prvků (zatím typu string), které chceš načíst (např. prvek : array [0..20] of string).
otevřeš si soubor (assign (f,'cela_cesta_k_souboru') append (f);) a for cyklem načítáš prvky a to tak, že načítáš a kontroluješ
jestli jsi nenarazil na čárku, pokud ano, tak začneš řetězec načítat do dalšího prvku pole, které jsis výše definoval (deklaroval) a nakonec převedeš prvky z typu string do real. Zhruba, takhle, ale v pascalu jsem se soubory už dlouho nepracoval, takže možná se mi někde vloudila chybička. Můžeš to také načítat rovnou jako čísla, ale ja to vzdy delal, takhle.
Zkus a chyby sem piš a já nebo někdo jiný je bude řešit.
To Yety : ahoj a díky za reakci. Bona fide jsem ucinil dle rady. Zdroj nyni vypada takto (viz nize), ale v zaznam(1) je cela radka dat, takze mam zmatek v tom, jak jit o jednotlivych znacich a hledat oddelovac(carku). Pokud bych mohl pozadat o formalni upravu tak abych cisla mel jako real, resp. int, myslim ze dalsi algoritmizaci zvladnu.
hezký večer
p.k.
program test_MA;
var
zaznam: array [1..47] of string;
data: array [1..2,1..10] of string;
OLHC: array [1..3,1..10] of real;
vol: array [1..10] of integer;
f: text;
i: byte;
begin
assign(f,'c:\soubor.txt');
{$I-}
reset(f);
{$I+}
if (IOResult=0) then
begin
while not eof(f) do
begin
for i:=1 to 7 do
begin
read(f,zaznam[i]);
end;
writeln(zaznam[1]);
writeln(zaznam[2]);
writeln(zaznam[3]);
readln(f);
end;
close(f);
end;
end.
Tech cyklu je tam nejak podezrele moc, chce to trochu zjednodusit (predpokladam, ze pole Zaznam je pomocne uloziste, do ktereho nacitas cely soubor):
i:=0;
while (i<47) and not eof(f) do
begin
inc(i);
readln(f,zaznam[i]);
end;
Ted je nacteno a v promenne i mas ulozeny pocet radku (ktery je potreba zachovat!).
String se chova jako pole znaku (array[1..neco] of char), takze se da prochazet pismeno po pismenu a testovat, jestli to je carka. Nebo je mozne carku najit pomoci funkce Pos, pak funkci Copy vytahnout usek pred ni, procedurou Val ho prevest na cislo a nakonec ho pomoci Delete smazat z nacteneho radku (vcetne te carky, aby se o ni dalsi Pos nezarazil).
Moje stránka.
To Mircosoft : ahoj a diky za navigaci. Povedlo se :). zdravi p.k.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
čtení ze souboru — založil Jakub Vojáček
Cteni ze souboru — založil Mory
Cteni souboru. — založil ewzen
Čtení souboru ve VB — založil hansk
čtení ze souboru — založil Roman
Moderátoři diskuze