Zní to jako jednoduchá věc! Nic na tom není - jen pár příkazů assign, rewrite apod..
Taky jsem si to myslel. Nechci sem chodit otravovat s každou maličkostí, tak jsem to nejprve zkoušel všemožně, ale po tom, co jsem bezúspěšně prošel asi půlku internetu, se musím zeptat.
Doufám, že to bude nějaká pořádná hloupost, ať se aspoň můžu stydět..
Na začátku nemám žádný .txt soubor a chci jej programem jednak vytvořit a jednak do něj zapisovat.
Po zkušenostech z google jsem vytvořil dva programy:
1. Od tohoto programu jsem přirozeně očekával, že hned vedle mého souboru pokus01.pas vytvoří ještě jeden, Fpokus01.txt.
program pokus01;
var T: text;
begin
assign(T, 'Fpokus01.txt');
rewrite(T);
writeln(T, 'ahoj');
close(T);
end.
2. Od tohoto souboru jsem očekával podobnou funkci, s tím rozdílem, že soubor Fpokus02.txt bude umístěn na C:\
program pokus02;
var T: text;
begin
assign(T, 'C:\Fpokus02.txt');
rewrite(T);
writeln(T, 'ahoj');
close(T);
end.
Tak a teď:
1. Program pokus01.pas žádný soubor Fpokus01.txt nevytvoří.
(Přestože program pokus02.pas jej vytvoří)
2. Ani když do složky k programu pokus01.pas přidám prázdný soubor Fpokus01.txt, tak s ním daný program nepracuje.
3. Třešnička na konec. Jsem sice trochu flegmatik, ale tohle bylo i na mě moc:
Tohle vše se děje, když program spouštím "během psaní" (tedy Compile, Execute). Když však spustím vzniklý soubor pokus01.exe, požadovaný soubor Fpokus01.txt už vznikne !!
Tak a teď babo raď. Příjde mi, že si ze mě pascal dělá srandu..
Ale vážně - opravdu bych potřeboval vysvětlit, proč se tohle všechno děje, vážně to nechápu :( .
A taky by mě zajímalo, co s tím - jak to rozumně naprogramovat tak, abych mohl případně někomu poskytnout tento zdroják (.pas) a on byl schopen ten program nějak rozumně spouštět, testovat apod.
Předpokládám, že uvádět absolutní adresu do programu je nesmysl a proto používat program pokus02.pas vůbec neuvažuju.
Díky za pomoc!
-----------------------------------------------------------------
PS: Firewall jsem vypnul, používám WinXP SP3, Dev-Pascal 1.9.2 :)