Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475

    [Delphi] Errore durante assegnazione

    Ciao a tutti...

    Quando mando in esecuzione questa procedura, ottengo un errore di "Invalid Floating Point Operation".

    constructor THumusRep.Create(territory: TPoint);
    var i, c: integer;
    begin
    inherited Create;
    location:= territory;
    c:= trim(300000, 20);
    for i:= 1 to c do self.Push(THumus.Create(territory));
    end;
    questo perchè quando provo ad assegnare un valore a i ottengo l'errore Invalid Floating Point Operation.

    Ho provato anche a sostituire il ciclo con

    i:=0;
    repeat
    inc(i);
    until i>= c;
    scoprendo così che l'errore arrivava su i:=0;

    Perchè non posso assegnare un valore ad i? Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    ciao

    credo che il problema sia 'c' non capisco questo tipo di assegnazione

    c:= trim(300000, 20);

    so che la funzione trim accetta come parametro una stringa....

    prova a fare una verifica

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    No, trim è una funzione che ho dichiarato io, con una scelta poco felice di nome a quanto pare (non mi ricordavo che ce ne fosse una per le stringhe). Tu le dai un valore e una percentuale. Lei restituisce un valore casuale compreso in valore +- la percentuale. Esempio: trim(100, 20), restituisce un valore casuale tra 80 e 120. Comunque non è quello il problema, nello stesso programma l'ho usata decine e decine di volte con successo (e non ho proprio voglia di cambiarle nome ^^).

    P.S: notare che lo stesso codice, perfettamente identico, funziona quando si riferisce ad altri elementi. In pratica devo creare 5 strutture che mi servono a contenere oggetti, di cui 2 sono identiche in tutti i dettagli (a parte nome e tipo contenuto). L'altra struttura, TSeedsRep, ha questo constructor:

    constructor TSeedsRep.Create(territory: TPoint);
    var i, c: integer;
    begin
    inherited Create;
    location:= territory;
    c:= trim(300000, 20);
    for i:= 1 to c do push(TSeed.Create(territory));
    end;
    è lo stesso codice del THumusRep, a parte il tipo di oggetto che viene creato al suo interno. Questo funziona. L'altro no. Bah...

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Ho risolto. Non so bene come, però ho risolto xD

    Ho creato la classe TRep, da cui poi TSeedsRep e THumusRep derivano. Il codice è praticamente invariato, perchè alla fine rimane quasi identico. Però stavolta funziona ^^

    Le magie dell'informatica :P

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Niente, invece non va bene. Questa soluzione non funziona, perchè poi con questa soluzione non riesco più a scrivere 9/10 delle procedure che devono eseguire... Praticamente le classi THumusRep e TSeedsRep contengono degli array che sono rispettivamente array di THumus e di TSeed. Quando devo scrivere procedure come una UpDate, ho bisogno di accedere alle proprietà e alle funzioni tipiche di THumus e TSeed, che sono diverse tra di loro. Quindi riesco a crearli, ma non a gestirli. Se ritorno alla soluzione di prima, riesco a gestirli ma non a crearli. Aiuto...

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475


    Perchè adesso fuzionaaaaa!?!?

    Io me lo tengo così... non so cosa sia successo e non lo voglio più sapere, l'importante è che ora, dopo aver giochicchiato un po' con le proprietà delle due classi, funziona...

    Grazie e scusate il disturbo...

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Ippo343
    Ho creato la classe TRep, da cui poi TSeedsRep e THumusRep derivano. Il codice è praticamente invariato, perchè alla fine rimane quasi identico. Però stavolta funziona ^^
    Probabilmente, non è come dici.

    Ad ogni modo, non ci è dato sapere il codice delle classi che usi, dove si trova con buona probabilità l'errore, quindi non è possibile di fatto fornirti un aiuto significativo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Ma l'errore non partiva a causa di codice svolto dalle classi, perchè partiva su i:=0; sia che nel ciclo mettessi del codice sia che non lo facessi...

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.