+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 7 su 7

Discussione: errore istruzione type

  1. #1
    caviccun non è in linea Scolaretto
    Luogo
    GENOVA
    Post
    104

    errore istruzione type

    Salve.Non riesco a capire perchè l'istruzione Type mi da l'errore che posto nello screenshot. Chi mi può aiutare?
    https://paste.pics/3G7HY
    Ad una persona cattiva gli puoi versare sopra tutto il Rum che vuoi, non diventerà mai buona come un Babà

  2. #2
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,143
    Dallo screenshot non si capisce molto, ma sembra che tu abbia scritto quel codice chissà dove, probabilmente non in un punto in cui è lecito posizionarlo.

    La parola chiave type consente di dichiarare tipi nelle righe seguenti: il fatto che la dichiarazione sia direttamente seguita da codice lascia pensare che tu abbia messo direttamente nella sezione interface delle istruzioni, senza quindi creare un contesto in cui eseguirle, poiché possono stare esclusivamente all'interno di procedure, o function, oppure metodi di una classe.

    Consiglierei un ripasso dei fondamenti del linguaggio e della struttura generale delle Unit.

    P.S.: il codice è meglio incollarlo qui, è completo (almeno delle parti rilevanti) piuttosto che allegare screenshot.

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

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  3. #3
    caviccun non è in linea Scolaretto
    Luogo
    GENOVA
    Post
    104
    OK faccio come dici. L'end finale l'ho messo io perchè ell'esempio che ho copiato non c'era, ho fatto male? Come hai visto non capisco perchè mi dà l'errore su widt. Ho cercato in rete un aiuto ma non so se il seguente codice poteva servirmi. Ho due oggetti chechkBox, il problema, se così si può definire, è che quando passo da un chechkbox all'altro sul secondo compare la spunta ma solo con DbClick (e viceversa).Io vorrei la spunta con solo un click, e pensavo dopo ave provato il type se avessi risolto il "problema". Ho ripreso il delphi dopo mesi che non lo usavo e molte cose non le ricordo. Grazie di tutto.
    questo il codice:
    type
    TCheckBoxEx = class(TCheckBox) ;
    with TCheckBoxEx(CheckBox1) do
    begin
    ClicksDisabled := true;
    Checked := NOT Checked;
    ClicksDisabled := false;
    end;
    end;
    Ad una persona cattiva gli puoi versare sopra tutto il Rum che vuoi, non diventerà mai buona come un Babà

  4. #4
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,143
    Quote Originariamente inviato da caviccun Visualizza il messaggio
    L'end finale l'ho messo io perchè ell'esempio che ho copiato non c'era, ho fatto male?
    Quando si prende un esempio, si dovrebbe cercare di comprendere quello che c'è dietro, o analizzare i suoi elementi per capire come usarli nel codice.
    Non si può copiare/incollare passivamente, in un punto a caso di un file, e aggiungere arbitrariamente un "end" per provare.

    Quote Originariamente inviato da caviccun Visualizza il messaggio
    Come hai visto non capisco perchè mi dà l'errore su widt. Ho cercato in rete un aiuto ma non so se il seguente codice poteva servirmi.
    Ti da errore su with perché quel codice è sicuramente nel posto sbagliato.

    Quote Originariamente inviato da caviccun Visualizza il messaggio
    Ho ripreso il delphi dopo mesi che non lo usavo e molte cose non le ricordo.
    Sulle cose avanzate puoi sorvolare, ma sulla struttura basilare delle Unit no: il codice che scrivi devi sapere dove ha senso inserirlo.

    Quote Originariamente inviato da caviccun Visualizza il messaggio
    questo il codice:
    type
    TCheckBoxEx = class(TCheckBox) ;
    with TCheckBoxEx(CheckBox1) do
    begin
    ClicksDisabled := true;
    Checked := NOT Checked;
    ClicksDisabled := false;
    end;
    end;
    Ripeto quello che ho già scritto: stai unendo due cose che non c'entrano l'una con l'altra e vanno sicuramente in posti diversi.

    La parola type la puoi usare nella sezione interface della unit, o nella sezione implementation, per dichiarare un nuovo tipo.

    Il codice che hai scritto dopo, ossia il costrutto with e quello che segue, non ha senso posizionarlo dove l'hai messo tu, a meno che non manchino delle parti salienti del tuo codice.

    E' un costrutto che esegue del codice, sono delle istruzioni, e pertanto vanno inserire all'interno di una procedure o di una function, oppure nel metodo che gestisce un evento come il click sulla CheckBox, ma non puoi scriverlo così di seguito, a caso, senza un criterio, dentro il file che contiene la dichiarazione del tipo.

    Ripassa i fondamentali di Delphi, oppure studia il significato di type e la struttura delle Unit, e riporta la sezione del file in cui hai inserito quel codice perché preso così non ha senso logico: è fuori posto, unisce due cose che non devono stare assieme, non si capisce a cosa sia correlato.

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

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  5. #5
    caviccun non è in linea Scolaretto
    Luogo
    GENOVA
    Post
    104
    ok, ho capito, grazie:
    Ad una persona cattiva gli puoi versare sopra tutto il Rum che vuoi, non diventerà mai buona come un Babà

  6. #6
    L'avatar di systemgvp
    systemgvp non è in linea Scribacchino
    Post
    582
    L'istruzione type va inserita sotto le uses principali o dopo la type del form i questo modo:

    type
    prova = class
    proprieta1 : real;
    proprieta2 : real;
    end;


    e si richiama dove ti serve in questo modo

    var oggetto : prova

    . . . . .

    oggetto : prova.Create;

    . . . . .
    . . . . .

    oggetto.Free;



    se non sbaglio l'istruzione with non la puoi usare nel type
    Embarcadero RAD Studio 10.2.3 Tokyo - con Pascal dal 1992

  7. #7
    caviccun non è in linea Scolaretto
    Luogo
    GENOVA
    Post
    104
    Grazie, questi consigli sono sempre utili. Comunque la routinetta type l'ho copiata da un sito. Grazie ancora
    Ad una persona cattiva gli puoi versare sopra tutto il Rum che vuoi, non diventerà mai buona come un Babà

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi