[ Relaja @ 16.12.2005. 10:40 ] @
Kako se u pascalu moze ucitati niz tipa Char koji sadrzi vise od 255 elemenata(da to nije ReadKey).Kada pokusavam da unesem znakovni niz duzi od 255 karaktera pokazivac se zadrzava na toj poziciji.Nemam mnogo znanja iz obrade textualnih podataka pa ako moze pomoc ?
[ Srki_82 @ 16.12.2005. 11:08 ] @
ReadLn podrzava unos najvise 255 karaktera tako da je jedini nacin sa ReadKey. Mozes napraviti neku svoju rutinu ReadLongLn koja ce ti vracati niz karaktera. U sustini nije nista narocito tesko. Uzmes poziciju kursora i cekas da korisnik nesto pritisne... kada se je karakter pritisnut ispises ga i pomeris kursor za jedno mesto... ako si na kraj ekrana predjes u sledeci red... specijalni karakteri (brisanje, strelice, del, enter, tab...) obradjujes kako zelis. ReadLn nema podrsku vracanja kroz text koji je ukucan strelicama i unosenjem slova izmedju vec unetih. To mozes vrlo lako da dodas u svojoj funkciji... sve u svemu, moras sam da iskodiras to :)
[ Relaja @ 16.12.2005. 19:00 ] @
Ali , ne znam da li je ovo moguce zbog toga sto ce zadatak biti podlozan testiranju na z-treningu.
[ Srki_82 @ 16.12.2005. 20:02 ] @
Sta je to z-trening? :)
[ Relaja @ 16.12.2005. 22:11 ] @
To ti je sajt na kome se nalaze zadaci iz programiranja koje mozes resavati u C/C++/Pascal -u .Po resavanju zadatka fajl sa kodom saljes na server i pomocu test primera odredjuje se tacnost zadatka.
[ Srki_82 @ 16.12.2005. 22:57 ] @
Kako to moze da utice da li je izvodljivo da se funkcija ReadLongLn napise kao sto sam ti objasnio?
[ Relaja @ 17.12.2005. 00:02 ] @
Pa na njemu se podaci ne unose sa tastature vec iz datoteka u kojima se ti test primeri nalaze .Iz toga zakljucujem da funkcija ReadKey ovde ne moze da nadje primenu .Mozda ja nisam u pravu,samo tako razmisljam.
[ Srki_82 @ 17.12.2005. 01:42 ] @
Hehe... ako zadatak glasi "Ucitaj 10000 znakova sa tastature" to znaci da ce podaci morati da dodju sa tastature :)

Ako hoces da ucitavas podatke iz fajla, onda je to jos lakse... recimo da hoces da uzmes 10000 karaktera... uradis sledece:
Code:
var
  C: PChar;
  F: File;
begin
  Assign(F, 'fsdfs');
  Reset(F, 1);
  GetMem(C, 10000);
  BlockRead(F, C^, 10000);
  Close(F);
  // Uradis nesto sa C
  FreeMem(C, 10000);
end;
[ Relaja @ 17.12.2005. 13:02 ] @
Ne razumemo se. Nije moj zadatak da ja ucitavam podatke iz datoteke vec ce oni taj znakovni niz ucitati kao ulazne podatke.Npr. kako ces iskopirati znakovni niz u consolu a da kopiranje ne stane na 256 znakova.Nadam se da si razumeo
[ Srki_82 @ 17.12.2005. 13:47 ] @
Ako mislis na recimo
Code:
MojExe.exe parametarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...rrrrrrr

gde parametar ima vise od 255 karaktera onda je to nemoguce u turbo pascalu jer je on radjen za DOS, a DOS je imao ogranicenje za to tako da se nije ni mogao dati parametar duzi od 255 karaktera.

Ne znam kako bi jos moglu da ti daju ulazne podatke... ili preko nekog ulaznog uredjaja (to je npr. tastatura i to sam ti objasnio), ili preko fajla (i to sam ti objasnio) ili preko komandne linije (za to koristis ParamStr funkciju, ali je ogranicenje za TP 255 karaktera i tu nema pomoci).

[Ovu poruku je menjao Srki_82 dana 17.12.2005. u 14:49 GMT+1]
[ Relaja @ 17.12.2005. 15:06 ] @
Mnogo ti hvala na trudu . Pokusacu nekako da resim problem.
[ _v!rus_ @ 20.12.2005. 09:02 ] @
Unos tako velikog ulaza se najlakse vrsi redirekcijom ulaza iz komandne linije.

Npr. napravis fajl input.txt, i u njega smestis text od npr. 1024 karaktera, zatim pozoves MojProg.exe < input.txt. Svaki Read u programu ce dobiti po jedan red iz fajla input.txt, tj. karaktere do #13#10. Shodno tome, MojProg.exe > out.txt ce kompletan izlaz programa smestiti u out.txt. Cak i Read/Write key bi trebalo da rade sa redirekcijom, mada nisam bas siguran, zavisi kako su implementirani, ako koriste OS onda hoce, ali ako se kace na interapt i koriste hardver direktno, onda nece.
[ Relaja @ 30.12.2005. 17:39 ] @
Ok , hala ti , ali resio sam problem.