Hogyan kell pascalban fájlból beolvasáskor egy heterogén sorból szétválasztani a változókat?
pl van ez a pár sor:
5 288 Joghurt Jakab TISZ
4 77 Kajszi Kolos GYEP
2 187 Kapor Karola ZEP
6 13 Karfiol Ede ZEP
az elején a számokat még le tudom választani de a keresztnevet valamiért egy stringként érzékeli az utolsó 3 betűvel. Ebből gondolom hogy nem csak a read utasítással kell játszani hanem valahogy a szóközöknél szét kell vagdosni a sort de hogyan?
Ahogy én szétszedném:
1. beolvasom a sort
2. széttagolom egy 5 tagú sztring tömbbe (a szóközök szerint)
3. kombinálok, típust alakítok az 5 tagú tömbből
program project1;
uses StrUtils, SysUtils;
type rekord = record
elso, masodik : integer;
harmadik, negyedik, otodik : string;
end;
var tomb : array of rekord;
i, n : integer;
s : string;
f : text;
dc : TSysCharSet;
begin
i := -1;
dc := [' '];
Assign(f, 'data.txt');
{$I-}
Reset(f);
while not EOF(f) do
begin
Inc(i);
SetLength(tomb, i + 1);
ReadLn(f, s);
tomb[i].elso := StrToInt(ExtractWord(1, s, dc));
tomb[i].masodik := StrToInt(ExtractWord(2, s, dc));
tomb[i].harmadik := ExtractWord(3, s, dc);
tomb[i].negyedik := ExtractWord(4, s, dc);
tomb[i].otodik := ExtractWord(5, s, dc);
end;
for n := 0 to i do WriteLn(tomb[n].elso, ' ', tomb[n].masodik, ' ', tomb[n].harmadik, ' ', tomb[n].negyedik, ' ', tomb[n].otodik);
Close(f);
{$I+}
SetLength(tomb, 0);
ReadLn;
end.
A hibakezelést rád bízom.
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!