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

    'Stack overflow' in BDS 2006 non in D7

    Salve

    ho convertito una mia applicazione, di fatturazzione, decennale da Delphi 7 A BDS 2006 win32.
    Apparentemente tutto funziona perfettamente, ma mi sono reso conto che al momento del calcolo di semplici prezzi presenta il seguente errore:
    ---------------------------
    Debugger Exception Notification
    ---------------------------
    Project xxxxxxxx.exe raised exception class EStackOverflow with message 'Stack overflow'.
    ---------------------------
    Break Continue Help
    ---------------------------
    Ho provato a cambiare tantissime opzioni del compilatore, riguardante stack ed altro, ma il risultato è sempre lo stesso.

    La stessa applicazione, con gli stessi valori, compilata con Delphi 7 funziona egreggiamente.

    E' forse un bug del 2006?

    A presto
    Gilberto Marzuillo
    Via Ceccano, 13
    81100 Caserta
    www.marzuillo.com

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Ci vorrebbe qualche informazione in più a riguardo, almeno uno stralcio del codice che presumibilmente restituisce il problema, oppure l'indicazione del database utilizzato e dei componenti adottati per accedervi.


    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Il db è paradox e non c'è nessun componente particolare, la procedura viene chiamata ne change di un campo del db in una dbgrid.

    Questo è il codice originale che alla riga nera torna come in un loop al begin, fino all'errore:

    procedure TFormFattureSemplici.TableFattureSempliciScontoCha nge(Sender: TField);
    var PrezzoScontato:Real;
    begin
    PrezzoScontato:=TableFattureSempliciPrezzo.Value-(TableFattureSempliciPrezzo.Value/100)*TableFattureSempliciSconto.Value;
    TableFattureSempliciImponibile.Value:=PrezzoSconta to*TableFattureSempliciQuantit.Value;
    TableFattureSempliciTotale.Value:=PrezzoScontato*T ableFattureSempliciQuantit.Value;
    TableFattureSempliciPrezzoIvato.Value:=TableFattur eSempliciTotale.Value+TableFattureSempliciTotale.V alue/100)*TableFattureSempliciCodiceIVA.Value;
    end;


    Questo è quello che sto modificando cercando di aggirare il problema, quì alla riga nera torna come in un loop al begin e dopo svariate volte da l'errore:

    procedure TFormFattureSemplici.TableFattureSempliciScontoCha nge(Sender: TField);
    var PrezzoScontato,Imponibile,Totale:Currency;
    begin
    Imponibile:=0;
    Totale:=0;
    PrezzoScontato:=TableFattureSempliciPrezzo.Value-(TableFattureSempliciPrezzo.Value/100)*TableFattureSempliciSconto.Value;
    Imponibile:=PrezzoScontato*TableFattureSempliciQua ntit.Value;
    // TableFattureSempliciImponibile.Value:=PrezzoSconta to*TableFattureSempliciQuantit.Value;
    TableFattureSempliciImponibile.Value:=Imponibile;
    TableFattureSempliciTotale.Value:=Imponibile;//PrezzoScontato*TableFattureSempliciQuantit.Value;
    //TableFattureSempliciPrezzoIvato.Value:=TableFattur eSempliciTotale.Value+(TableFattureSempliciTotale. Value/100)
    // *TableFattureSempliciCodiceIVA.Value;
    TableFattureSempliciPrezzoIvato.Value:=totale+(tot ale/100)*TableFattureSempliciCodiceIVA.Value;
    end;
    Gilberto Marzuillo
    Via Ceccano, 13
    81100 Caserta
    www.marzuillo.com

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Il fatto che l'errore sia Stack Overflow mi fa pensare che possa trattarsi di un meccanismo che da luogo ad un "circolo visioso", generando continuamente l'evento che hai riportato.

    Più che presenza di un nuovo bug, può capitare a volte di incontrare errori inediti in quanto, a causa di un "difetto storico" che viene risolto, uno stralcio di codice che prima funzionava poiché magari la protezione da errore era debole improvvisamente genera un errore, anche se è proprio l'errore ad essere il risultato più attendibile da un punto di vista teorico.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Non saprei cosa possa essere però ti posso dire che utilizzando la proprietà Value dei TField avevo avuto qualche problemino(adesso però nn ricordò cosa ).

    Hai già provato a sostituire con AsCurrency, AsFloat, asInteger ecc...

    Spero d esserti stato utile.

    Ciao

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da Nikk11
    Hai già provato a sostituire con AsCurrency, AsFloat, asInteger ecc...
    Non so se ha a che fare col problema specifico, ma il suggerimento di usare queste proprietà per leggere e scrivere il valore del campo è senz'altro ottimo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.