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

Langage Delphi Discussion :

QuotedStr et longueur de chaine


Sujet :

Langage Delphi

  1. #21
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    ok a lors essai cela :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Tbl.FieldByName('description_whisky').Value := 
    'Ce single malt exprime tout son potentiel dans cette version sherry'+
    ' cask millésimée d''anthologie. De couleur ambrée à reflets dorés, le'+
    ' nez d''une étonnante fraîcheur se révèle très épicé (camphre, noix'+
    ' muscade). Il est également marqué par la cire et les fleurs capiteuses'+
    ' (lys). La bouche ample et puissante, immédiatement fruitée (mirabelle), '+
    ' se développe sur des notes florales et sur un boisé vanillé très fin. '+
    ' La finale huileuse évolue sur les fruits secs (noix de cajou), '+
    ' le chocolat et les épices douces (safran).';

  2. #22
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 936
    Points
    3 936
    Par défaut
    Citation Envoyé par retwas Voir le message
    Voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    qry.SQL.Append('INSERT INTO whisky (id_whisky, nom_whisky, ref_whisky, degre_whisky, volume_whisky, tourbe_whisky, recompense_whisky, prix_whisky, description_whisky, img_whisky, age_whisky, id_sous_type, id_distillerie, id_marque, is_favori, lien_whisky, packaging_whisky, vieillissement_whisky, millesime_whisky, embouteillage_whisky, date_whisky) VALUES');
    qry.SQL.Append('(1, ' + QuotedStr('Glen grant 1952 ') + ' , ' + QuotedStr('1005') + ', 40, ' + QuotedStr('70cl') + ', ' + QuotedStr('Non tourbé') + ', ' + QuotedStr('') + ', ' + QuotedStr('1260,00') + ', ' + QuotedStr('Ce single malt exprime tout son potentiel dans cette version sherry cask millésimée d''anthologie. De couleur ambrée à reflets dorés, le nez d''une étonnante fraîcheur se révèle très épicé (camphre, noix muscade). Il est également marqué par la cire et les fleurs capiteuses (lys). La bouche ample et puissante, immédiatement fruitée (mirabelle), se développe sur des notes florales et sur un boisé vanillé très fin. La finale huileuse évolue sur les fruits secs (noix de cajou), le chocolat et les épices douces (safran).') + ', null, null, 1, 1, 1, 0, ' + QuotedStr('http://www.whisky.fr/glen-grant-1952.html') + ', ' + QuotedStr('Cof.Luxe') + ', ' + QuotedStr('Sherry butt') + ', 1952, ' + QuotedStr() + ', null),');
    qry.SQL.Append('(2, ' + QuotedStr('Glen grant 1956 ') + ' , ' + QuotedStr('1006') + ', 40, ' + QuotedStr('70cl') + ', ' + QuotedStr('Non tourbé') + ', ' + QuotedStr('') + ', ' + QuotedStr('892,00') + ', ' + QuotedStr('Embouteillé par Gordon & Macphail, ce malt âgé du Speyside se distingue par une palette aromatique et gustative alliant notes de fruits mûrs et boisé épicé. De couleur ambrée, le nez sherry est crémeux, boisé/vanillé avec des notes florales et fruitées. La bouche confirme le nez avec de la longueur et un fin boisé.') + ', null, null, 1, 1, 1, 0, ' + QuotedStr('http://www.whisky.fr/glen-grant-1956.html') + ', ' + QuotedStr('Cof.Luxe') + ', ' + QuotedStr('') + ', 1956, ' + QuotedStr() + ', null);');
    Maintenir une chose pareille ne va pas être de la tarte. Es-tu sûr d'avoir placé les bonnes chaînes dans les bons champs (j'ai pas vérifié)? avec une affectation par paramètre, le risque serait moindre, je persiste.
    Si la taille des chaînes n'est pas limitée dans SQLite, ce n'est pas forcément vrai pour la couche d'accès (à voir).
    Quelle couche d'accès utilises-tu ? (BDE , DB Express, ZeosDBO...)?

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  3. #23
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Merci BuzzLeclaire cela fonctionne avec un affectation "découpé"

    @e-ric : Vu que ça passe sur l'affectation de param avec un découpage avec des + je vais les utiliser.

    Ce que je trouve pas pratique c'est que:
    - 1 je fais ma requete (insert into whisky (nom_whisky, ..) values (:nom, ..)
    - 2 j'affecte tous mes paramètres (environ un dizaine)
    - 3 je fais un exec sql
    - 4 je boucle sur 2 et 3

    Sur environ 2000 insert cela va me faire un nombre énorme de ligne

    J'ai essayé hier d'inclure un fichier text en tant que ressource qui contient une requête par ligne. Ensuite de l'enregistré sur disque a l'execution et de le parcourir ligne par ligne pour executer les requetes .. mais impossible de réucpérer la ressource, il me dit "aucune ressource n'existe pour ce nom" j'ai essayé avec un glisser deposer dans le projet, le fichier rc que j'execute ensuite pour avoir le fichier res et que j'inclue dans mon unite .. pas mieux

  4. #24
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 936
    Points
    3 936
    Par défaut
    Je te l'ai dit, utilise prépare, comme ça tu n'affectes les instructions de la requête q'une seule fois, les qry.execute successifs se limiteront à passer les paramètres, par exemple dans une boucle.

    Ne peux-tu pas définir une boucle ? D'où viennent les données à insérer ? (tableaux, fichier ... ou codé en dur ) Ne peux-tu pas prendre les données depuis des fichier texte ? (xml, json ou autre).

    Est-ce que ces données sont fixes ou varient-elles dans le temps ?

    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #25
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Mes données sont actuellement dans une base MySQL sur mon PC
    Je peux en faire un fichier XML mais comment le lire depuis mon application mobile ?

  6. #26
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Il fallait donc bien réduire la taille dans Delphi. J'avais eu le même problème sur une grosse requête que je mémorisais dans un String, d’ailleurs normalement Delphi te le signal avec un petit trait rouge et quand tu compile il te le signal en avertissement...

    Bon , maintenant que le problème est résolu, pour réduire ton dév, il y a plusieurs solutions :
    • tu transforme ma proposition avec Tbl en procédure, cette procédure comprendra les values, il te suffira de l'appeler en envoyer en paramètre uniquement les données.
    • tu créé 2 fichiers textes
      1. Le premier c'est la requête avec les paraméters
      2. Le deuxième c'est les données


      Principe : 1 ligne = 1 requête, transforme bien les données en parameters, ensuite tu monte en mémoire tes fichiers (dans 2 stringlist), tu Add chaque ligne dans un Qry et tu rempli les paraméters avec l'autre


    Il y a d'autre moyen surement.

    a+

  7. #27
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Merci Buzz pour ton aide, effectivement Delphi souligne en rouge et d'ailleurs cela provoque une erreur la compilation n'est pas possible.

    J'ai mes deux fichiers correct.

    Pour monter les fichiers en mémoire dans des stringlist je dois les ajouter en tant que ressource à mon projet nan ?

    J'ai mon fichier rc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    structure RCDATA structure.txt
    donnees RCDATA donnees.txt
    Je l'ouvre avec l'exe bdrcc32 pour avoir mon fichier .res

    Dans mon code j'ajoute {$R *.res} et quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsData := TResourceStream.Create(hInstance, 'structure', RT_RCDATA);
    J'ai le message d'erreur : "Ressource non trouvée"

    A moins que je me trompe et que je ne sois pas obligé d'ajouter ces fichiers en tant que ressource ?

    Merci

  8. #28
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    Fais déjà ton programme sans ressource, monte les deux fichiers comme ceci

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Proc...
    Var
      MaString1, MaString2: TStringList;
    begin
      MAString1 := TStringList.Create;
      Try
        MaString1.LoadFromFile('c:\alinfini\etaudela\buzz\fichier1.txt');
     
       // ...
       {
    Ici tu monte le deuxième stringlist
    et ensuite tu traite les 2 stringlists
       }
       // ...
     
      Finally
        if Assigned(MaString1) then FreeAndNil(MaString1);
      end;
    end;
    Pour la notion de ressource, je vois pas l'intérêt car une ressource par principe est mémorisé tel quel dans la compile donc après elle ne change pas, avec des fichiers l'avantage c'est que tu peux enlever, modifie, ajouter des requêtes et fournir de nouveau le fichier trxt etc...

    bye

  9. #29
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Le problème c'est que je ne peux pas ajouter mon fichier comme ca car je suis sous un interface android.. (FMX Mobile)

  10. #30
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par retwas Voir le message
    Le problème c'est que je ne peux pas ajouter mon fichier comme ca car je suis sous un interface android.. (FMX Mobile)
    ??? étonnant, regarde çela :

    File Externe

  11. #31
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 936
    Points
    3 936
    Par défaut
    Tu alimentes une base locale SQLite avec des données provenant d'une base de données MySQL, c'est ça ?

    Si tes données sont constantes, à quoi cela sert-il de les stocker dans un fichier texte, qui plus est en ressources donc quelque part en dur, pour les insérer ensuite dans une base SQLite ? Ne pourrais-tu alors pas livrer directement une base SQLite pré remplie avec ton application ?

    Je te pose ces question car je comprend mal le fond du problème.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  12. #32
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    @buzz: ce que je n'arrive pas a faire c'est "transporter" un fichier texte et ensuite le posé sur le disque, les ressources ne fonctionne pas avec les fichiers .txt ou .sql, pourtant aucun probleme avec mes jpeg .. peut etre un bug sur XE5 ?

    @e-ric: C'est la méthode la plus simple effectivement mais je l'ai mise de coté car je n'arrive pas a le faire .. mais je serais content d'avoir la solution.

    Je n'arrive pas a "stocker" ma base dans mon application pour la poser sur le disque lors de la première ouverture ou si elle n'existe pas..

    J'ai bien ma base "data.db" en SQLite mais je suis coincé.
    J'ai essayé en tant que ressource mais impossible a chaque fois il me dit qu'il ne trouve pas la ressource alors que le rc et le .res sont corrects..

  13. #33
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 936
    Points
    3 936
    Par défaut
    @e-ric: C'est la méthode la plus simple effectivement mais je l'ai mise de coté car je n'arrive pas a le faire .. mais je serais content d'avoir la solution.

    Je n'arrive pas a "stocker" ma base dans mon application pour la poser sur le disque lors de la première ouverture ou si elle n'existe pas..
    Je ne connais la plateforme Android donc mon aide sera très limitée à ce sujet.
    Si tu es en milieu professionnel, n'as-tu pas des collègues qui sauraient te dépanner ?

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  14. #34
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par e-ric Voir le message
    Je ne connais la plateforme Android donc mon aide sera très limitée à ce sujet.
    Si tu es en milieu professionnel, n'as-tu pas des collègues qui sauraient te dépanner ?
    Il s'agit d'une application personnel mais j'ai parlé avec un collègue et on a trouvé la (une) solution !

    Du coup j'ai ma base de données SQLite (structure et données) dans mon fichier database.db3

    A coté de mon .dproj je crée un fichier .rc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    madb RCDATA "database.db3"
    Ensuite il faut ajouter ce fichier .rc au projet (par glisser-déposer), chose que je ne faisais pas..

    Pour finir, si la base n'existe pas sur le périphérique on la récupère des ressources

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure TfdmMain.dbxBeforeConnect(Sender: TObject);
    var
      sPathDatabase: string;
      rsData: TResourceStream;
    begin
      sPathDatabase := TPath.GetDocumentsPath + PathDelim + 'database.db3';
     
      // si la base n'existe pas on utilise celle des ressources
      if not FileExists(sPathDatabase) then
      begin
        try
          rsData := TResourceStream.Create(hInstance, 'madb', RT_RCDATA);
          rsData.SaveToFile(sPathDatabase);
        finally
          rsData.Free;
        end;
      end;
     
      dbx.Params.Values['Database'] := sPathDatabase;
     
    end;
    Merci a tous pour votre aide et vos réponses

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [RegEx] Expression régulière et longueur de chaine
    Par cbroissa dans le forum Langage
    Réponses: 30
    Dernier message: 23/05/2006, 19h33
  2. [Debutant] Longueur de chaine
    Par georgeabitbol dans le forum Oracle
    Réponses: 2
    Dernier message: 20/03/2006, 16h42
  3. Liste modifiable : longueur de chaine.
    Par pifou02 dans le forum Access
    Réponses: 8
    Dernier message: 09/01/2006, 15h47
  4. [MySQL] controle numérique de longueur de chaine en php
    Par melli dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/12/2005, 11h24
  5. BDE, la longueur de chaine ne peut dépasser 256 BYTES
    Par valoji dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/10/2005, 08h57

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