thoga31 Posted August 24, 2012 at 08:13 PM Report Share #473425 Posted August 24, 2012 at 08:13 PM (edited) Olá, pessoal. Como já é habitual, ando de volta das minhas experiências, e deparei-me com um problema. Eu necessito de ler uma linha num ficheiro que tem 6000 caracteres. Aquilo que estava a fazer era ler linha a linha até ao fim do ficheiro, e, a cada linha, fazer o tratamento dos dados. // ... var linha : string; ficheiro : text; // ... while not eof(ficheiro) do begin readln(ficheiro, linha); // tratameto da string "linha" end; Contudo, linha recebe só 255 caracteres dos 6000, sendo os restantes ignorados. Eu já desconfiava que este problema iria surgir, mas agora que o confirmei, gostaria de debater convosco formas de poder contornar esta situação. Pensei em fazer um Packed Array[1..6000] of Char, mas o seu tratamento torna-se algo complicado. Não existirão outras formas mais "elegantes" de ler 6000 caracteres? Cumprimentos, thoga31. Edited August 24, 2012 at 08:14 PM by thoga31 Knowledge is free! Link to comment Share on other sites More sharing options...
nunopicado Posted August 24, 2012 at 08:33 PM Report Share #473427 Posted August 24, 2012 at 08:33 PM Diz-me uma coisa, precisas dos 6000 numa variável só? Ou pode ser por partes? "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
thoga31 Posted August 24, 2012 at 08:34 PM Author Report Share #473428 Posted August 24, 2012 at 08:34 PM Não. Posso dividir em partes de 6 caracteres cada. Knowledge is free! Link to comment Share on other sites More sharing options...
nunopicado Posted August 24, 2012 at 08:37 PM Report Share #473430 Posted August 24, 2012 at 08:37 PM Então é simples... Limitas a tua string a 6 caracteres: var linha:String[6]; Depois no ciclo, em vez de readln usas o read. Ele irá ler 6 caracteres apenas, e o "cursor" ficará no caracter seguinte. Assim, quando voltares a correr o read, ele irá ler os 6 caracteres seguintes! Resolve-te? "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
thoga31 Posted August 24, 2012 at 08:42 PM Author Report Share #473434 Posted August 24, 2012 at 08:42 PM (edited) Bem, assim já resolve. 😄 Mas agora como detecto a passagem para uma outra linha? Com a detecção do CR+LF?... Edited August 24, 2012 at 08:42 PM by thoga31 Knowledge is free! Link to comment Share on other sites More sharing options...
nunopicado Posted August 24, 2012 at 08:44 PM Report Share #473435 Posted August 24, 2012 at 08:44 PM Por exemplo, ou então com um outro while interno while not eol (ficheiro) do begin end; "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
thoga31 Posted August 24, 2012 at 08:52 PM Author Report Share #473439 Posted August 24, 2012 at 08:52 PM Ahh, pois é, que parvoíce, já me esquecia do EOL. Obrigado, @nunopicado 😉 Knowledge is free! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now