Newsgroup: it.comp.lang.delphi
Titolo: Re: access violation

Ciao a tutti ho scritto precedentemente per un problema che giudico
particolare.
Attualmente la seguente procedura funziona correttamente con alcuni
"file.txt" e con altri no, ma il fatto più strano è che per un momento ha
funzionato perfettamente con il mio file.txt ma dopo averlo modificato  con
blocco note non ha più funzionato di nuovo  un errore di access violation.
Premetto che il mio file.txt è stato creato con blocco note. Sapete
spiegarmi questa cosa stranissima? Grazie mille per la risposta....
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
begin
  richedit1.Clear;
  richedit2.Clear;
  richedit1.lines.LoadFromFile(file.txt);
   for i:=0 to pred(richedit1.lines.count) do
    begin
        s:=memo1.lines[i];
       edit2.Text:=s[1];
        if (edit2.Text='0') or (edit2.Text='1') then
        begin
        richedit2.Lines.add(s);
        end;
    end;
end;

        edit2.Text:=s[1];
Ho paura che l'errore sia qua.
Prima di usare il primo carattere della stringa, testa se la stringa è
vuota:
if s <> '' then.....
-- 
Jax
====
In amore, chi arde non ardisce e chi ardisce non arde. (Niccolò
Tommaseo)

 Tommaseo)
Io ci avevo pensato ma vedevo che con altri file era tutto ok... provo e
magari ti faccio sapere se č ok. Grazie cmq anche per gli altri
suggerimenti....

 altri suggerimenti....
Può darsi che su quei file non ci fossero righe vuote.
Non so cosa faccia di preciso il tuo programmino, però se posso vorrei
proporti un paio di correzioni:
   for i:=0 to pred(richedit1.lines.count) do
    begin
        s:=memo1.lines[i];
       edit2.Text:=s[1];
        if (edit2.Text='0') or (edit2.Text='1') then
        begin
        richedit2.Lines.add(s);
        end;
    end;
***********
for i := 0 to pred(richedit1.lines.count) do
begin
    s := memo1.lines[i];
    if s <> '' then
    begin
        if (s[1] = '0') or (s[1] = '1') then richedit2.Lines.Add(s);
    end;
end;
-- 
Jax
====
Ogni cosa sulla terra ha un doppio carattere, come una miscela di
sabbia e di zucchero. Sii come la saggia formica che sceglie solo lo
zucchero e non tocca la sabbia. Per la colpa di molti non giudicare il
tutto.


Era come dicevi tu... ma il fatto più strano e che sugli altri file le righe
vuote c'erano... xò adesso funziona tutto ok. Grazie mille JAX :-)

 cciclo for puoi metterci if richedit1.lines.count>0 then
Il ciclo for non va affatto in errore.
A meno che non vada in errore Prec(), che non ho mai usato... ma dubito.
Il costrutto for i := 0 to -1 è perfettamente valido, solo che il codice
all'interno non verrà mai eseguito (che, nel caso di un file vuoto, è
appunto quello che si vuole).
-- 
Jax
====
La voce della coscienza e' come uno di quei congegni dall'allarme che
scattano per ogni nonnulla e nessuno gli da più retta.

 type   Colors = (RED,BLUE,GREEN);
Ah, non lo sapevo... gagliardo!
-- 
Jax
====
Soltanto i grandi uomini possono avere grandi difetti. (F.de la
Rochefoucauld)

A meno che non vada in errore Prec(), che non ho mai usato... ma dubito.
Pred(), semmai ;)
Io non lo usavo, ne ho appreso l'uso dal "mittico" Guastatore, infatti e' piu'
versatile perche' accettando tipi ordinali puoi scorrere non solo intervalli
numerati restituiti dalle canoniche funzioni ComponenCount, REcordCount,
ecc... ma anche dai set che definisci quali i giorni della settimana e altre
amenita'... vedi l'esempio fornito dall'help :
type   Colors = (RED,BLUE,GREEN);
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/