2023(e)ko apirilaren 24(a), astelehena

Direktorioak: Non gaude?
















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:


    1.   ''

    2.   'HemenGorde\'

    3.   GetCurrentDir + ''\''

    4.   'HanGorde\'

    5.   '\Dev-Pas\HanGorde\'

    6.   'C:\Dev-Pas\HanGorde\'

    7.   'E:\Dev-Pas\HanGorde\'

    8.   '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