Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [DELPHI] - Testare Variabile Array

    Ciao, come faccio a testare se una variabile VARIANT è un Array ?
    Esiste una funzione tipo IsArray(variabile) come in visual basic?
    ...NO ONE IS INNOCENT ANYMORE...

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Puoi usare la funzione VarIsArray definita nella unit Variants che devi ovviamente includere nella clausola "uses".

    In generale, se ti è possibile, evita l'uso di tipi Variant e prediligi tipi ben definiti poichè le operazioni fatte sui Variant sono nettamente più lente e meno performanti.

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

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

  3. #3
    E purtroppo sono obbligato ad usare i variant perchè non conosco che tipo di dati l'utente mi passa...
    Ora, con la tua funzione sono riuscito a verificare se il mio dato è un array, il problema è che quando cerco di leggere i valori dell'array mi da questo errore :
    [Error] masterlib.pas(394): E2431 for-in statement cannot operate on collection type 'Object' because 'Object' does not contain a member for 'GetEnumerator', or it is inaccessible

    ho usato questo codice:

    codice:
    procedure MyWriteLn(const Args: array of const);
      var textDisplay : TObject;
      var ArrayObject: TObject;
      var ArrayObj: Tobject;
      var I:Integer;
    
      begin
        for ArrayObject in Args do
        begin
          if VarIsArray(Variant(ArrayObject)) then // verifico se è un array
            begin
              for ArrayObj in ArrayObject do // scorro gli elementi dell'array
                begin
                  textDisplay:=ArrayObj[I]+'';
                  form_handle.Display(textDisplay);
                end;
            end
          else
            begin
              textDisplay:=ArrayObject.ToString+'';
              form_handle.Display(textDisplay);
          end;
        end;
    Come posso fare altrimenti?
    ...NO ONE IS INNOCENT ANYMORE...

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    L'uso del costrutto for...in non è ammesso con gli array di Variant.

    Devi dichiarare una variabile intera ed eseguire un ciclo sfruttando i limiti dell'array restituiti dalle funzioni VarArrayLowBound e VarArrayHighBound.

    La sezione "Variants" della Guida in linea contiene TUTTE le funzioni (e le relative istruzioni) che ti serviranno nel trattamento dei tipi di dato Variant in generale.

    Ciao!
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.