2024(e)ko apirilaren 21(a), igandea

Direktorioak: Non gaude?







Gure programetan sarritan egiten dugu hau, baina zer balio jarriko dugu sBIDEA kostantean:

1
2
3
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.