Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118

    [Delphi] Alcuni dubbi sull'impiego di "with"

    Riporto l'intera funzione che permette alla pressione di un click di generare una IBTable e con due campi e due indici.

    Vorrei concentrare la vostra attenzione sula riga di codice evidenziata in nero che contiene la parola chiave "with".
    Come tutti ben sappiamo la parola chiave "with" permette di costruire un blocco in cui è possibile accedere all'oggetto
    preceduto da questa parola chiave, senza citare il nome dell'oggetto + l'operatore di referenza, ma solamente specificando gli attributi dell'oggetto all'interno del blocco creato da "with".

    In questo caso "with" non è seguito dal nome di un oggetto, ma bensì dal nome di una procedura.
    Inoltre "with" punta indirettamente ad un oggetto TFieldDef, come è possibile?


    Per favore autatemi, ho un enorme dubbio.


    Grazie.


    ->

    procedure TForm1.Button1Click(Sender: TObject);


    begin

    with IBTable1 do begin

    Active := False;
    { First, give the table a database }
    Database := IBDataBase1;
    TableName := 'CustInfo';
    { Next, describe the fields in the table }
    with FieldDefs do begin
    Clear;
    with AddFieldDef do begin
    Name := 'Field1';
    DataType := ftInteger;

    Required := True;
    end;
    with AddFieldDef do begin
    Name := 'Field2';
    DataType := ftString;
    Size := 30;
    end;
    end;
    { Next, describe any indexes }
    with IndexDefs do begin
    Clear;
    with AddIndexDef do begin
    Name := '';
    Fields := 'Field1';
    Options := [ixPrimary];
    end;
    with AddIndexDef do begin

    Name := 'Fld2Indx';
    Fields := 'Field2';
    end;
    end;
    { Call the CreateTable method to create the table }
    CreateTable;
    end;

    end;

    end.

    <-

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,333
    Non si tratta di una procedura, ma di una funzione, pertanto l'effetto del costrutto with viene applicato all'oggetto che si ottiene come valore di ritorno della funzione (che poi è in realtà un metodo, dato che appartiene ad una classe).

    In generale, eviterei l'uso di with quando possibile, soprattutto nidificandolo... rischi di addentrarti in effetti collaterali difficili da "debuggare" in un secondo momento.

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

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    Originariamente inviato da alka
    Non si tratta di una procedura, ma di una funzione, pertanto l'effetto del costrutto with viene applicato all'oggetto che si ottiene come valore di ritorno della funzione (che poi è in realtà un metodo, dato che appartiene ad una classe).

    In generale, eviterei l'uso di with quando possibile, soprattutto nidificandolo... rischi di addentrarti in effetti collaterali difficili da "debuggare" in un secondo momento.

    Ciao!
    Ti ringrazio anche del consiglio sull'utilizzo di "with", pensare di utilizzarlo il meno possibile mi fà sentire più sollevato dato che avrei problemi a orientarmi tra le troppe nidificazioni che verrebbero a crearsi.

    Quindi in questo caso with referenzia l'oggetto restituito dalla funzione, ho capito.

    A presto.

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.