Zas ten hnusny pascal...
Zas ten hnusny pascal...
Prosim, potreboval by som poradit, ako v pascale ocislovat riadky textoveho dokumentu (.txt)? A ako nastavit od-enterovanie od uzivatela po kazdom 50.tom riadku? Diky za help 
-
Sagittarius
Guru
- Príspevky: 2883
- Registrovaný: 13 feb 2007, 21:58
- Bydlisko: Do nekonečna a ešte ďalej
Re: Zas ten hnusny pascal...
No mohlo by to ísť takto
pravdaže je to v nejakom cykle, keďže je to textový súbor, tak while
a potom
A miesto tých troch pridáš ASCII kód entra, ten neviem aké má číslo... Myslím, že takto by to mohlo ísť. Ak som ťa dobre pochopil 
Kód: Vybrať všetko
readln(t);
i:=i+1;a potom
Kód: Vybrať všetko
if (i mod 50 = 0) then ...-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Zas ten hnusny pascal...
enter je 13
Re: Zas ten hnusny pascal...
Nespravne polozena otazka a este nespravnejsie odpoved. Jedine ta 13 je k veci. To chces cislovat vytvarany subor, alebo uz vytvoreny? A co myslis pod tym odentrovanim? Akoze pri kazdom 50. riadku sa da jeden ENTER naviac (prazdny riadok)? Z toho co si napisal nie je jednoznacne co vlastne chces. Tak sup sup a pis k veci. A co je to za odpoved While .... i:=i+1. Vsak to mozem povedat taku odpoved hadam na 99% programov (To je ako Nostradamusove proroctva, vzdy sa dopasuju tak, ze akosi sedia).
-
Sagittarius
Guru
- Príspevky: 2883
- Registrovaný: 13 feb 2007, 21:58
- Bydlisko: Do nekonečna a ešte ďalej
Re: Zas ten hnusny pascal...
Ja som ten program myslel nejako takto:
Len problém je ten, že nemôžeš zo súboru naraz aj čítať aj zapisovať...
Kód: Vybrať všetko
begin
clrscr;
i:=0;
assign(t,'suborent.txt');
reset(t);
while not eof(t) do
begin
readln(t);
i:=i+1;
if (i mod 50 = 0) then
begin
writeln(t,chr(13));
end;
end;
close(t);
readln;
end.Re: Zas ten hnusny pascal...
da sa to vcelku jednoducho obist. bude pracovat s dvoma subormi. z jedneho bude citat. kazdy precitany riadok zapise aj s poradovym cislom do druheho suboru.a je to.
Re: Zas ten hnusny pascal...
Presne tak 
Re: Zas ten hnusny pascal...
No ma to byt z vytvoreneho suboru, a uzivatel ma stlacit enter po kazdom 50 riadku, aby to bolo prehladnejsie.Gregi napísal:Nespravne polozena otazka a este nespravnejsie odpoved. Jedine ta 13 je k veci. To chces cislovat vytvarany subor, alebo uz vytvoreny? A co myslis pod tym odentrovanim? Akoze pri kazdom 50. riadku sa da jeden ENTER naviac (prazdny riadok)? Z toho co si napisal nie je jednoznacne co vlastne chces. Tak sup sup a pis k veci. A co je to za odpoved While .... i:=i+1. Vsak to mozem povedat taku odpoved hadam na 99% programov (To je ako Nostradamusove proroctva, vzdy sa dopasuju tak, ze akosi sedia).
//autoeditácia príspevku (04 Mar 2010, 9:17)
Diky za help
Re: Zas ten hnusny pascal...
Takze asi takto:
Kód: Vybrať všetko
Program TEXT_EDIT;
uses Crt;
var
zdroj,vysledok: text;
i: Longint; {max 2147483647 riadkov}
riadok: string;
function IntToStr(i: Longint): string; { konvertovanie cisla na retazec }
var
s: string;
begin
Str(i,s);
IntToStr:=s;
end;
BEGIN
ClrScr;
Assign (zdroj,'cesta k zdojovemu suboru');
Assign (vysledok,'cesta k vytvaranemu suboru');
Reset (zdroj); {otvor subor <zdroj>}
Rewrite (vysledok); {vytvor, premaz subor <vysledok>}
i:=1;
While not (Eof (zdroj)) do begin {pokial nie je koniec suboru <zdroj>, pokracuj v slucke}
ReadLn (zdroj,riadok); {nacitaj riadok zo <zdroj> a uloz do <riadok>}
WriteLn (vysledok,IntToStr(i)+' '+riadok); {zapis do vysledku}
if i mod 50=0 then begin
Write (vysledok,IntToStr(i+1)+#13); {ak je to kazdy 50-ty riadok, vloz iba cislo a ENTER <#13>}
Inc(i);
end;
inc(i); {inkrementuj i o 1}
end;
END.