Newsgroup: it.comp.lang.delphi
Titolo: Problema impossibile con D6

Chiedo scusa al ng per il titolo troppo nebuloso ma non saprei come 
altro sintetizzarlo.
all'interno di una unit di D6 ho questa chiamata di funzione:
var
   PK: Int64;
begin
   PK := MyStrToInt(FldIDPK.AsString);
dove FldIDPK ï¿œ un oggetto TField.
La funzione MyStrToInt ï¿œ una mia versione di StrToInt con la differenza 
che se il valore stringa ï¿œ '' il risultato viene forzato a 0.
L'ho *sempre* usata.
Per chiarezza riporto il codice:
function MyStrToInt(const Value: String): Int64;
begin
   if Value = '' then
     Result := 0
   else if not IsNumber(Value) then
     raise ErrConvert.Create('MyStrToInt - ' + Value + ' non ï¿œ un numero 
valido')
   else
     Result := StrToInt(Value);
end;
L'anomalia, riscontrata solo ultimamente, e che se per esempio il valore 
contenuto in FldIDPK ï¿œ 4, La funzione mi restituisce qualcosa come 
7876767887767677766532.
Problema della funzione, penserete.
Solo che D6 non entra proprio nella funzione (l'ho provato riempiendola 
di breakpoint).
Ho pensato che in un momento di follia potrei averla overridata da 
qualche altra parte, cioï¿œ ci potrebbe essere qualche altra definizione 
di MyStrToInt che fa cose diverse, ma con Ctrl-click sulla chiamata mi 
va sulla unit giusta.
E' come se D6 al momento della chiamata della funzione prendesse un 
valore astruso chissï¿œ dove.
Problema hardware o di installazione? Perï¿œ prima funzionava.
Se qualcuno ha avuto problemi del genere mi faccia sapere, grazie.
Roberto

 Problema hardware o di installazione? Perï¿œ prima funzionava.
Il fatto che non entri nella funzione e che ti restituisca un numero 
grandissimo potrebbe dipendere da un particolare valore del tfield che 
ti fa scoppiare la funzione .asstring della vcl...
Modifica il codice cosi':
var
   PK: Int64;
   s:string;
begin
   s := FldIDPK.AsString;
   PK := MyStrToInt(s);
e vai di debug (F7) dentro la vcl. credo che tu sappia come debuggare 
la vcl, se non lo sai 
:
http://delphi.about.com/od/delphitips2007/qt/debug_vcl.htm
Ciao
-- 
Morde

 :
http://delphi.about.com/od/delphitips2007/qt/debug_vcl.htm
In effetti non l'ho riportato nel post precedente, ma non va in F7, cioï¿œ 
ci passa sopra ma non entra nella funzione.
Ho provato come hai suggerito tu, ma niente.
Per altro, il valore in questo caso del FldIDPK.AsString ï¿œ '4', cioï¿œ il 
problema non ï¿œ lï¿œ, ma viene da come il mio delphi tratta la chiamata 
della funzione MyStrToInt.

 funzione MyStrToInt.
Non avevi detto che la asstring da un risultato atteso :-)
Prova a rinominare mystrtoint in Cicero ad esempio, e ricompila.
Mi aspetto che avrai giï¿œ preso tutte le precauzioni quali cancellare 
tutti i dcu, riverificare la librarypath che non ci siano cartelle con 
file dello stesso nome, ecc...
Se non ne esci creati un programmino tester con un form e un solo 
bottone, e metti il codice incriminato nel buttonclick.
Puoi anche eliminare tutto via via, cioe' alla fine devi restare solo 
con la chiamata alla funzione passandogli '4' direttamente.
Proca a crearti il tfield a runtime invece che leggerlo dal dataset.
Togli pezzo per pezzo, fai terra bruciata intorno al bug, e lo vedrai 
scappar fuori dalla tana appena sentirï¿œ il calore del fuoco..
:-)
Ciao
-- 
Morde

 :-)
Adoro l'odore del Napalm di mattina..
Scusate non ho resistito ;)

 
Prova a bypassare la tua funzione con una di libreria vcl
var
   PK: Int64;
   s:string;
begin
   s := FldIDPK.AsString;
   PK := StrToIntDef(s, 0);
....
^_Goblin_^
-- 
Ibis et redibis non morieris in bello
http://goblinland.myminicity.com/

 ^_Goblin_^
Cosï¿œ funziona, ma il mio problema ï¿œ capire perchï¿œ non va con le mie 
librerie, che peraltro uso ampiamente in un mare di altri progetti.
Seguendo i consigli di Morde credo di aver trovato un conflitto con 
qualche package che mi ero fatto e che usa la stessa unit.