Egy text fájlban így vannak az adatok:fffffiiiiiiffiiifi (lényeg hogy folyamatosan nem soron ként) és beszeretném őket egyesével egy tömbbe olvasni?
Meg fog lepődni. A Read eljárás kell :)
program olvas;
var c : char;
f : file of char;
tomb : array of char;
i: integer;
begin
i := -1 ;
Assign(f,'d:\sorozat.pas');
{$I-} //Tudom ronda :), hogy nincs tovább kezelve
Reset(f);
SetLength(tomb, FileSize(f));
while not Eof(f) do
begin
Inc(i);
Read(f, c);
Tomb[i] := c;
Write(c);
end;
Close(f);
{$I+}
end.
Szégyellem magam, hogy egy elkapkodott kódot másoltam be:( álljon itt helyette ez:
program olvas;
var f : file of char;
tomb : array of char;
i: integer;
begin
i := -1 ;
Assign(f,'d:\sorozat.pas');
{$I-}
Reset(f);
if IOResult = 0 then
begin
SetLength(tomb, FileSize(f));
while not Eof(f) do
begin
Inc(i);
Read(f, tomb[i]);
Write(tomb[i]);
end;
Close(f);
end
else
begin
WriteLn('Hiba a file megnyitasnal !');
end;
{$I+}
SetLength(tomb, 0);
end.
program fejvagyiras;
uses crt;
var a:array[1..1001] of char;
f:file of char;
fej,ir,i:integer;
p:string;
begin
fej:=0;
p:='c';
assign(f,'fejvagyiras.data');
reset(f);
i:=0;
while not eof(f) do begin
inc(i);
Read(f,a[i]);
end;
if a[i]='F' then inc(fej)
else
inc(ir);
close(f);
writeln('ir:',ir,'fej:',fej,fej+ir);
end.
201 es code /szerintem az egészett be akarja olvasni az a[1] be/ :D
mi a hiba?
Végül is az egész program rossz :) Nem jó helyen számolod a 'F' betűket és nem szabad engedni túlcsordulni a tömböt, ezért írtam a mintában dinamikusat, alkalmazkodva a file méretéhez.
program fejvagyiras;
uses crt;
var a : array[1..1001] of char;
f : file of char;
fej, ir, i : integer;
begin
fej := 0;
ir := 0;
Assign(f,'d:\fejvagyiras.data');
Reset(f);
i := 0;
while (not Eof(f)) and (i < 1001) do
begin
Inc(i);
Read(f, a[i]);
if a[i]='F' then Inc(fej) else Inc(ir);
end;
Close(f);
Writeln('ir: ', ir, 'fej: ', fej, 'Osszes: ', fej+ir);
end.
Így megáll ha elérte a tömb legnagyobb indexét vagy elérte a file végét. Az az igazság egy UpCase is elférne a file hibakezelésen kívül.
Csak hogy egy másik megközelítést is láss:
program fejvagyiras;
{$mode objfpc}{$H+}
uses Classes, Sysutils;
var
Adatfile: TStringList;
i,j: integer;
Fej, Iras: integer;
Sor: String;
begin
try
Adatfile:=TStringList.Create;
Adatfile.LoadFromFile('fejvagyiras.data');
j:=0;
Fej:=0;
Iras:=0;
Sor:='';
for i:=0 to Adatfile.Count-1 do
begin
Sor:=AdatFile[i];
for j:=1 to length(Sor) do
if (Upcase(Sor[j])='F') then inc(Fej)
else inc(Iras);
end;
finally
FreeAndNil(Adatfile);
writeln('Fej: ',Fej,' Iras: ',Iras,' Fej+iras: ',Fej+Iras);
end;
end.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!