Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [delphi] Problema strtoint

    Se provo a convertire una stringa che contiene valori non numerici mi da errore....
    come posso fare per eliminare quello che non è numerico? sapendo che il valore è ricevuto da una inputbox?

    conta:=inputbox('Contatore','Modifica:',0);

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Di quale linguaggio stiamo parlando?
    Il regolamento prevede che tale informazione sia presente, oltre che nella discussione per ovvie motivazioni di buon senso, anche nel titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ups ho omesso il linguaggio comunque è delphi pardon

  4. #4
    puoi provare a gestire la eccezionie

    try ... except ....

    ciao
    sergio

  5. #5
    Come suggerito puoi provare con un blocco try oppure puoi usare la StrToIntDef dove puoi passare un intero di default nel caso non riuscisse a convertire la stringa.
    ...

  6. #6
    ho provato con il try .... ma forse sbaglio qualcosa perchè mi esce comunque il messaggio di errore

    Codice PHP:
    conta:=inputbox('Contatore','Modifica il contatore:','0');     
    try       
    test:=strtoint(conta);      
    if (
    conta<>Mod_dati.FIBQuery.FieldByName('NMCALL').asStringthen 
    begin
            
    // salvare nel db
            
    Lblnumero.Caption:=conta;         
    end;       
    end;     
    except      
     showmessage
    ('Inserire un numero intero valido');     
    end

  7. #7
    Primo: indenta il codice o non si capisce nulla.

    Secondo: nel codice che hai scritto sembra esserci un end di troppo.

    Terzo: per questo caso puoi usare strtointdef, basta passare come valore di default un valore che sei sicuro di non trovare nella query che interroghi. Ti risparmi un blocco try except.
    ...

  8. #8
    Originariamente inviato da sally3000
    ho provato con il try .... ma forse sbaglio qualcosa perchè mi esce comunque il messaggio di errore

    Codice PHP:
    conta:=inputbox('Contatore','Modifica il contatore:','0');     
    try       
    test:=strtoint(conta);      
    if (
    conta<>Mod_dati.FIBQuery.FieldByName('NMCALL').asStringthen 
    begin
            
    // salvare nel db
            
    Lblnumero.Caption:=conta;         
    end;       
    end;     
    except      
     showmessage
    ('Inserire un numero intero valido');     
    end
    Ciao, credo che ti dia l'errore siccome hai dimenticato di gestire il tipo di eccezione. Nel tuo caso ti deve mandare il messaggio di errore (cioè invocare lo ShowMessage) se appunto si cerca di convertire una stringa che non contiene numeri, qundi vi è un errore di conversione.

    try
    X :=strtoInt(label1.caption);
    except
    on EConvertError do showmessage('Errore');
    end;

    in questo piccolo esempio cerco di inserire in una variabile intera X il contenuto di una label, nel caso in cui la stringa in questione contenga qualche carattere si solleva un eccezione e in quel caso (cioè di un EConvertError) invoco ShowMessage, ma potevo fare quel che volevo :-).

    Ricorda comunque che in fase di esecuzione, il Delphi ti avvertirà sempre con una sua finestra di errore, dicendoti che si è sollevata quell'eccezione, tu premi F9 e continua con l' esecuzione, vedrai che poi apparirà il tuo messaggio di errore e il tuo programma continuerà normalmente. Questo è un comportamento normale di Delphi che può essere aggirato smanettando con quelche settaggio, una volta lo feci, ma ora francamente non mi ricordo quale sia .

    Spero di averti aiutato.


  9. #9
    ho sbagliato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.