Gure programetan sarritan egiten dugu hau, baina zer balio jarriko dugu sBIDEA kostantean:
write(Fitxategiaren izena eman (LIBURUAK adibidez): ');
readln(sFitxIzenLiburutegia);
sFitxIzenLiburutegia := sBIDEA + sFitxIzenLiburutegia + '.DAT';
Beste modu batez galdeturik: datu-fitxategia non sortzen da?
- HemenGaude direktorio bat sortu ordenadorearen edozein tokitan (mahaigainean adibidez), bere barnean HemenGorde direktorio bat sortu
- HanGorde direktorio bat sortu C:\Dev-Pas direktorioan
Datu-fitxategia non sortzen da? galderari erantzuteko programa bat erakusten da beherago. Zenbakiak gordetzen dituen FitxategiakEtaDirektorioak programa deskriba dezagun urratsez urrats:
- Hasieran uneko direktorioa erakusten da pantailan GetCurrentDirectory funtzioari esker
- Ondoren, datu-fitxategiaren sIzena izena teklatuaren bitartez emango du erabiltzaileaak
- Datu-fitxaregiaren izen osoa eraikitzen da aurretik bidea jarriz eta ostean gehiagarri bat eta luzapena jarriz, bidearen aukerak hauek dira:
- ''
- 'HemenGorde\'
- GetCurrentDir + ''\''
- 'HanGorde\'
- '\Dev-Pas\HanGorde\'
- 'C:\Dev-Pas\HanGorde\'
- 'E:\Dev-Pas\HanGorde\'
- 'E:\'
- Datu-fitxategiaren izen osoa finkaturik bere existentzia aztertzen du programak, eta horren arabera bi bide irekitzen dira:
- Datu-fitxategia ez bada existitzen sortu eta elementuak biltegitzen dira
- Datu-fitxategia existitzen bada elementu berriak gehitzen dira bukaeran
Iturburu-programa konpilatu ondoren FitxategiakEtaDirektorioak.exe programa exekutagarria lortuko dugu eta egikaratzeko bi modu daude: Dev-Pas programazio-ingurune barrutik eta Dev-Pas programazio-ingurunetik kanpo.
Dev-Pas programazio-ingurunetik kanpo
Iturburu-programa konpilatuz FitxategiakEtaDirektorioak.exe programa exekutagarria lortu ondoren, Dev-Pas ingurunetik irten HemenGaude direktoriora joateko eta FitxategiakEtaDirektorioak.exe gainean klik egiteko.
Uneko direktorioa HemenGaude delarik, datu-fitxategiarentzat bide desberdinak aukeratu eta emaitza hauek ikertu:
Bidea | Datu-fitxategia non sortzen da | |
1 | '' | datu-fitxategia HemenGaude direktorioan |
2 | 'HemenGorde\' | datu-fitxategia HemenGorde direktorioan |
3 | GetCurrentDir + '\' | datu-fitxategia HemenGaude direktorioan |
4 | 'HanGorde\' | exekuzio-denborako errorea |
5 | '\Dev-Pas\HanGorde\' | datu-fitxategia HanGorde direktorioan |
6 | 'C:\Dev-Pas\HanGorde\' | datu-fitxategia HanGorde direktorioan |
7 | 'E:\Dev-Pas\HanGorde\' | errorea E: unitatean dauden direktorioen arabera |
8 | 'E:\' | E: unitatearen erroan (E: unitatean diskorik badago) |
Dev-Pas programazio-ingurune barrutik
FitxategiakEtaDirektorioak.pas iturburu-programa konpilatu eta Dev-Pas programazio-ingurunearen menuko Run project aukera hautatu programa exekutatzeko.
Kasu honetan uneko direktorioa C:\Dev-Pas dela jakinik, datu-fitxategiarentzat bide desberdinak aukeratu eta emaitza hauek ikertu:
Bidea | Datu-fitxategia non sortzen da | |
1 | '' | datu-fitxategia C:\Dev-Pas direktorioan |
2 | 'HemenGorde\' | exekuzio-denborako errorea |
3 | GetCurrentDir + '\' | datu-fitxategia C:\Dev-Pas direktorioan |
4 | 'HanGorde\' | datu-fitxategia C:\Dev-Pas\HanGorde direktorioan |
5 | '\Dev-Pas\HanGorde\' | datu-fitxategia C:\Dev-Pas\HanGorde direktorioan |
6 | 'C:\Dev-Pas\HanGorde\' | datu-fitxategia C:\Dev-Pas\HanGorde direktorioan |
7 | 'E:\Dev-Pas\HanGorde\' | errorea E: unitatean dauden direktorioen arabera |
8 | 'E:\' | E: unitatearen erroan (E: unitatean diskorik badago) |
FitxategiakEtaDirektorioak.pas iturburu-programa
program FitxategiakEtaDirektorioak;
uses
sysutils; (* GetCurrentDir eta FileExists funtzioek behar dutelako *)
type
tfFitxategia = file of integer;
tsKatea = string[199];
procedure FitxategiaIkusi(sFitxIzen: tsKatea);
var
f: tfFitxategia;
iElementua: integer;
begin
{ uztartu }
assign(f, sFitxIzen);
reset(f);
writeln('"', sFitxIzen, '" fitxategiak ', filesize(f), ' elementu ditu, bere edukia:');
while not eof(f) do
begin
read(f, iElementua);
writeln(iElementua:5);
end;
writeln('.....................................................................');
writeln;
{ itxi }
close(f);
end;
procedure FitxategiaSortuEtaBete(sFitxIzen: tsKatea);
var
f: tfFitxategia;
iElementua, i, kopurua: integer;
begin
{ uztartu }
assign(f, sFitxIzen);
rewrite(f);
write('Zenbat elementu nahi dituzu "', sFitxIzen, '" fitxategian? ');
readln(kopurua);
randomize; { random-aren hazia hasieratu }
for i:=1 to kopurua do
begin
iElementua:=random(10); { 0 eta 9 arteko zenbakia }
write(f,iElementua); { fitxategian idatzi eta hurrengo elementura pasa }
end;
{ itxi }
close(f);
end;
procedure FitxategiariElementuakGehitu(sFitxIzen: tsKatea);
var
f: tfFitxategia;
iElementua: integer;
cErantz: char;
begin
{ uztartu }
assign(f, sFitxIzen);
reset(f);
seek(f, filesize(f));
repeat
write('"', sFitxIzen, '" fitxategian gordetzeko zenbaki bat eman: ');
readln(iElementua);
write(f, iElementua);
write('Datu gehiagorik gorde nahi duzu? (B/E): ');
readln(cErantz);
cErantz := upcase(cErantz);
until cErantz <> 'B';
{ itxi }
close(f);
end;
{============================PROGRAMA NAGUSIA============================}
var
sIzena: tsKatea;
cAukera: char;
begin
writeln;
writeln;
writeln('Uneko direktorioa: ', GetCurrentDir);
writeln;
writeln('Lanerako fitxategiaren izena eman ezazu (luzapenik gabe)...');
write('Adibidez, "Datuak" izena: ');
readln(sIzena);
writeln;
writeln;
repeat
writeln(' "', sIzena, '" fitxategiaren bidea aukeratu:');
writeln(' 1. ""');;
writeln(' 2. "HemenGorde\"');
writeln(' 3. GetCurrentDir + "\"');
writeln(' 4. "HanGorde\"');
writeln(' 5. "\Dev-Pas\HanGorde\"');
writeln(' 6. "C:\Dev-Pas\HanGorde\"');
writeln(' 7. "E:\Dev-Pas\HanGorde\"');
writeln(' 8. "E:\"');
writeln;
write('Exekuzio-denborako errorea gerta daitekeen arren, bide bat aukeratu: ');
readln(cAukera);
until (cAukera >= '1') and (cAukera <= '8');
case cAukera of
'1': sIzena := '' + sIzena + '_aukera-' + cAukera + '.DAT';
//'1': sIzena := sIzena + '_aukera-' + cAukera + '.DAT';
'2': sIzena := 'HemenGorde\' + sIzena + '_aukera-' + cAukera + '.DAT';
'3': sIzena := GetCurrentDir + '\' + sIzena + '_aukera-' + cAukera + '.DAT';
'4': sIzena := 'HanGorde\' + sIzena + '_aukera-' + cAukera + '.DAT';
'5': sIzena := '\Dev-Pas\HanGorde\' + sIzena + '_aukera-' + cAukera + '.DAT';
'6': sIzena := 'C:\Dev-Pas\HanGorde\' + sIzena + '_aukera-' + cAukera + '.DAT';
'7': sIzena := 'E:\Dev-Pas\HanGorde\' + sIzena + '_aukera-' + cAukera + '.DAT';
'8': sIzena := 'E:\' + sIzena + '_aukera-' + cAukera + '.DAT';
end;
writeln;
if fileexists(sIzena) then
begin
writeln('"', sIzena, '" fitxategia existitzen da, lan egin dezagun.');
writeln;
FitxategiaIkusi(sIzena);
FitxategiariElementuakGehitu(sIzena);
FitxategiaIkusi(sIzena);
end
else
begin
writeln('"', sIzena, '" fitxategia ez da existitzen, sortuko dugu.');
writeln;
FitxategiaSortuEtaBete(sIzena);
FitxategiaIkusi(sIzena);
end;
writeln;
write('RETURN sakatu programa bukatzeko');
readln;
end.
iruzkinik ez:
Argitaratu iruzkina