IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Conversion d'une variable en string


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 186
    Points : 84
    Points
    84
    Par défaut Conversion d'une variable en string
    Bonjour,

    Je cherche une fonction qui me permettrait de convertir n'importe qu'elle variable en string

    Existe-t-il une fonction qui permet de connaitre le type de variable ?

    un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if VarIsInt then ...
    If VarIsFloat then ...

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 859
    Points : 11 303
    Points
    11 303
    Billets dans le blog
    6
    Par défaut
    j'ai peur de dire des bêtises, mais le compilo a besoin de connaître le type des variables => pas possible, sauf si tu utilises les variants, de type inconnu à la compilation, et qui contiennent donc une info de type, mais auxquels je ne connais rien !

    as-tu réellement besoin de traiter des variables de type inconnu pour les convertir en chaîne ? ou bien serait-ce une simple facilité de codage d'avoir une procédure générique ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 186
    Points : 84
    Points
    84
    Par défaut
    Merci pour ta réponse

    En fait je vais chercher des données dans une DB grace à une fonction
    qui ressemblerait à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function ShowField(dsField: TDataSource; Field: String): string;
    begin
      if IsInt then
        result := IntToStr(dsField.DataSet.FieldByName(Field).AsInteger);
      if IsFloat then
        result := FloatToStr(dsField.DataSet.FieldByName(Field).AsFloat);
      if IsDate then
        ...
    end;
    Et je l'appelle comme ceci
    ShowField(monDataSource; monChamps)

    Je voulais tout simplement simplifier la fonction
    monDataSource.DataSet.FieldByName('monChamps').AsString

    Le problème c'est que je ne connais pas à l'avance le format des données stockées dans ma DB...

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut


    pourquoi n'utilises-tu pas simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dsField.DataSet.FieldByName(Field).AsString;

    [EDIT]
    sinon pour ce que tu cherches c'est la propriété DataType du TField
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dsField.DataSet.FieldByName(Field).DataType;

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 186
    Points : 84
    Points
    84
    Par défaut
    Le but c'est juste de me simplifier la vie...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    case dsSuppliers.DataSet.FieldByName('supplier_id').DataType of
        ftInteger:
          showmessage(IntToStr(dsSuppliers.DataSet.FieldByName('supplier_id').AsInteger));
        ftDate:
          showmessage(DateToStr(dsSuppliers.DataSet.FieldByName('supplier_id').AsDateTime));
    end;
    J'ai essayé ceci mais il n'en veut pas...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 186
    Points : 84
    Points
    84
    Par défaut
    J'ai trouvé en faisant comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      case AnsiIndexStr(GetEnumName(TypeInfo(TFieldType),
            Ord(dsField.DataSet.FieldByName(Field).DataType)),
            ['ftString', 'ftAutoInc', 'ftInteger', 'ftDate']) of
        0: result := dsField.DataSet.FieldByName(Field).AsString;
        1: result := IntToStr(dsField.DataSet.FieldByName(Field).AsInteger);
        2: result := IntToStr(dsField.DataSet.FieldByName(Field).AsInteger);
        3: result := DateToStr(dsField.DataSet.FieldByName(Field).AsDateTime);
      end;
    Merci pour votre aide...

  7. #7
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    si ton but est de convertir la valeur du champ sous forme de chaine de caractères, je ne comprends pas pourquoi tu n'utilises pas simplement la propriété AsString du TField:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function ShowField(dsField: TDataSource; Field: String): string;
    begin
      result := dsField.DataSet.FieldByName(Field).AsString;
    end;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion d'une variable string en tableau
    Par kyino dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/02/2015, 13h14
  2. Conversion d'une variable string en BSTR
    Par thibthib71 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2012, 11h52
  3. Test d'une variable type string vide
    Par benny-blanco dans le forum C#
    Réponses: 5
    Dernier message: 08/08/2012, 18h04
  4. conversion d'une variable sous CVI
    Par Invité(e) dans le forum C
    Réponses: 0
    Dernier message: 26/11/2009, 14h17
  5. Conversion d'une variable
    Par johntayback dans le forum C++
    Réponses: 9
    Dernier message: 18/06/2009, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo