Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003

    [Delphi] Non trova datamodule

    Mi sa che mi sto rinco...
    Allora.. partiamo dall'inizio:
    File->New->Application

    ok, mi crea un form.. ci metto i componenti che mi servono.
    Ora devo aggiungere un datamodule e faccio
    File->New->DataModule
    Mi crea il datamodule, ci metto il documento XML imposto le azioni che mi servono, salvo il file .pas

    Ritorno sul sorgente del main form e sotto implementatio ci metto un bel

    uses nome-con-cui-ho-salvato-il-datamodule

    Faccio "Run"
    e mi esce un bel dialog con l'errore
    "Resource Tnomedatamodule not found"

    Se rimuovo il datamodule dal progetto e ce lo riaggiungo mi viene compilato tutto correttamente ma mi da access violation perchè il datamodule risulta non avere alcun form in pratica dalla unit Program scompare il comando Application.CreateForm(Tdatamodule, datamodule);

    Son sicuro che c'è qualcosa che mi sfugge.. ma non capisco cosa.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Per utilizzare un DataModule nella tua applicazione, dopo averlo aggiunto al progetto, devi assicurarti che venga creato (a meno che non lo faccia tu manualmente, ma è il caso più raro).

    Per crearlo in modo automatico, si agisce dalla finesta di dialogo delle Opzioni di progetto inserendo il modulo nell'elenco "Auto create forms".

    Quando hai bisogno di referenziarlo da una unit secondaria, come quella del MainForm, basta premere ALT+F11 (che corrisponde alla funzione "Use Unit") e aggiungere il riferimento alla clausola uses della unit in cui ti trovi.

    Se il MainForm contiene componenti collegati ad altri componenti esterni nel DataModule oppure ne richiama funzioni che prescindono dal fatto che quest'ultimo sia creato, occorre accertarsi che la creazione del DataModule avvenga prima del MainForm per non incorrere in errori di Access Violation che sono sempre brutti da vedere.

    Per il resto, credo che non ci sia altro da aggiungere.

    Quando si rimuovono Form, Frame, DataModule in generale, occorre fare attenzione che non rimangano i corrispondenti file DCU per il semplice fatto che, se l'applicazione contiene riferimenti alle unit dei moduli rimossi, tali moduli vengono compilati dai DCU nell'applicazione; se questo coincide con casi di omonimia, si ottengono ovviamente errori che possono risultare all'apparenza "strani" ma che sono ben giustificati da quanto detto.

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

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

  3. #3
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Ho seguito alla lettera ciò che hai detto.
    Sono andato nella unit program per accertarmi che l'ordine di creazione fosse
    Application.CreateForm(TProtocollo, protocollo);
    Application.CreateForm(TMainFrm, MainFrm);

    eppure continua a darmi errore di Risorsa non trovata.
    Inoltre, ho sbagliato ad esprimermi prima perchè a compilare compila senza alcun errore. E' quando deve avviare l'applicazione che mi dà problemi.

    Mi spiace per la stupidità della questione, ma è da stamattina che rifaccio daccapo la stessa applicazione perchè non riesco più a modificare i datamodule creati (proprio perchè nel rimuovere ed aggiungere successivamente i datamodule dal progetto mi perdo il form originario del datamodule)


  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Rimuovi tutti i file DCU esistenti nella cartella del progetto prima di compilare nuovamente l'applicazione.
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.