Kezdőoldal » Számítástechnika » Programozás » Free pascalban a beolvasásban...

Free pascalban a beolvasásban kellene segitség kérdés lentebb?

Figyelt kérdés

Egy sima txt fajból kellene beolvasnom egy tömbbe(record típusos)

a txt fájl több sorban valahogy így:

Nagy Ádám 25 Könyvelő


több sorban ilyesmik és ezt hogy tudom beolvasni egy record szerkezetbe?



2015. ápr. 20. 11:59
 1/9 anonim ***** válasza:

Akkor a txt-fájl így néz ki:

példa:

Nagy Ádám 25 Könyvelő

Kis Márta 41 Prostituált


Vagy:

Nagy

Ádám

25

Könyvelő

Kis

Márta

41

Prostituált



....

A record hogy néz ki?

2015. ápr. 20. 12:52
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:

egymás mellett van 1 ember adata

Nagy Ádám 25 Könyvelő

Kis Márta 41 Prostituált


a record fájl meg ugye

3 rész 1. név

2. kor

3. melo

2015. ápr. 20. 13:39
 3/9 SimkoL ***** válasza:

Ha a rekordot javítanád:

1. Vezeték név

2. Kereszt név

3. Kor

4. Foglakozás

talán egyszerűbb lenne, mert így beolvasáskor 'össze kell adni' a két első adatot. - a szóköz az értelemszerű elválasztó -

2015. ápr. 20. 13:47
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

rendben, köszi :)

csak én magával a beolvasás szisztémával nem tudok mit kezdeni hogy hogy kell, ötletem sincs,

elvileg van valami törlős meg darabolós módszer vagy nem tudom. ezekről tudnátok mondani valamit?

2015. ápr. 20. 14:26
 5/9 SimkoL ***** válasza:
Ha megvárod míg összemosogatok - mert ha az asszony hazajön ... - akkor írok neked mintát.
2015. ápr. 20. 14:56
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:
nagyon szépen köszönöm :)
2015. ápr. 20. 14:59
 7/9 anonim ***** válasza:

Bár nem a legszebb, de lehet használni tipusos állományt:

Kiírás a fájlba:

Program algirithm1;


type szemely = record

Vezeteknev: String[30];

Keresztnev: String[30];

Kor: byte;

Foglalkozas: String[30];

end;


var emberek: array[1..5] of szemely;

i: integer;


var f: FILE of szemely;


begin


assign(f, 'nevsor.bat');

reset(f);

for i:= 1 to 2 do begin

read(f, emberek[i]);

end;

close(f);

for i:= 1 to 2 do

writeln(emberek[i].Vezeteknev);

readln();

end.

.....

Kiolvasás a fájlból:


Program algirithm1;


type szemely = record

Vezeteknev: String[30];

Keresztnev: String[30];

Kor: byte;

Foglalkozas: String[30];

end;


var emberek: array[1..5] of szemely;

i: integer;


var f: FILE of szemely;


begin


assign(f, 'nevsor.bat');

reset(f);

for i:= 1 to 2 do begin

read(f, emberek[i]);

end;

close(f);

for i:= 1 to 2 do

writeln(emberek[i].Vezeteknev);

readln();

end.

2015. ápr. 20. 15:27
Hasznos számodra ez a válasz?
 8/9 SimkoL ***** válasza:

Erre gondoltál, ez a törlős módszer, nagyon primitív, de működik:


program Project1;


uses sysutils;


type

rekord = record

veznev, kernev, fogl: string[30];

kor: integer;

end;


var

tomb: array of rekord;

f: Text;

s: string;

i, n: integer;


begin

Assign(f, 'C:\teszt.txt');

Reset(f);

n := 0;

SetLength(tomb, n);

while not EOF(f) do

begin

Inc(n);

SetLength(tomb, n);

ReadLn(f, s);

if s <> '' then

begin

i := Pos(' ', s);

tomb[n - 1].veznev := Copy(s, 0, i - 1);

Delete(s, 1, i);

i := Pos(' ', s);

tomb[n - 1].kernev := Copy(s, 0, i - 1);

Delete(s, 1, i);

i := Pos(' ', s);

tomb[n - 1].kor := StrToInt(Copy(s, 0, i - 1));

Delete(s, 1, i);

i := Pos(' ', s);

tomb[n - 1].fogl := Copy(s, 0, Length(s));

Delete(s, 1, i-1);

end;

WriteLn(tomb[n - 1].veznev);

WriteLn(tomb[n - 1].kernev);

WriteLn(tomb[n - 1].kor);

WriteLn(tomb[n - 1].fogl);

end;

Close(f);

ReadLn;

SetLength(tomb, 0);

end.


Természetesen elbírna egy kis hibakezelést :), de azt inkább hagyjuk.

2015. ápr. 20. 15:59
Hasznos számodra ez a válasz?
 9/9 SimkoL ***** válasza:

Most nézem, hogy ronda egy kódot írtam, ez talán picit jobb, szebb:


program Project1;


uses sysutils;


type

rekord = record

veznev, kernev, fogl: string[30];

kor: integer;

end;


var

tomb: array of rekord;

f: Text;

s: string;

i, n: integer;


begin

Assign(f, 'C:\teszt.txt');

Reset(f);

n := 0;

while not EOF(f) do

begin

Inc(n);

SetLength(tomb, n);

ReadLn(f, s);

if s <> '' then

begin

i := Pos(' ', s);

tomb[n - 1].veznev := Copy(s, 0, i - 1);

Delete(s, 1, i);

i := Pos(' ', s);

tomb[n - 1].kernev := Copy(s, 0, i - 1);

Delete(s, 1, i);

i := Pos(' ', s);

tomb[n - 1].kor := StrToInt(Copy(s, 0, i - 1));

Delete(s, 1, i);

i := Pos(' ', s);

tomb[n - 1].fogl := Copy(s, 0, Length(s));

end;

WriteLn(tomb[n - 1].veznev, #10#13, tomb[n - 1].kernev, #10#13, tomb[n - 1].kor, #10#13, tomb[n - 1].fogl);

end;

Close(f);

ReadLn;

SetLength(tomb, 0);

end.


Benn maradt pár felesleges dolog.

2015. ápr. 20. 16:06
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!