[RESOLU] Souci d'initialisation de String

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

[RESOLU] Souci d'initialisation de String

Message par falsam »

Ce code retourne un string correctement initialisé

Code : Tout sélectionner

Define.s ReqSql

;Préparation de la requête de création de la table des medias
ReqSql = "CREATE TABLE medias ("

ReqSql + "IdMedia INTEGER PRIMARY KEY," ;Identifiant enregistrement
ReqSql + "media BLOB,"                  ;Contenu binaire
ReqSql + "Name TEXT"                    ;Libellé de l'opération

ReqSql + ")"

Debug ReqSql
debug a écrit :CREATE TABLE medias (IdMedia INTEGER PRIMARY KEY,media BLOB,Name TEXT
Si j’insère ce code dans un code de création de base de données la variable ReqSql ne s'initialise pas correctement.

Code : Tout sélectionner

EnableExplicit

Define.i Database.i
Define.s DatabaseName = "assets.sqlite", ReqSql = ""

;Création d'un fichier vierge
If CreateFile(Database, DatabaseName)
  CloseFile(Database) 
Else
  MessageRequester("Erreur", "Impossible de créer un fichier") ;En principe ça ne devrait pas arriver :)
  End
EndIf

;Ouverture et création de la base de données 
UseSQLiteDatabase()
If OpenDatabase(Database, DatabaseName, "", "", #PB_Database_SQLite)
  
  ;Préparation de la requête de création de la table des medias
  ReqSql = "CREATE TABLE medias ("
  
  ReqSql + "IdMedia INTEGER PRIMARY KEY," ;Identifiant enregistrement
  ReqSql + "media BLOB," ;Contenu binaire
  ReqSql + "Name TEXT" ;Libellé de l'opération
    
  ReqSql + ")"
  
  Debug ReqSql
  
  ;Exécution de la requete
  DatabaseUpdate(Database, ReqSql)  
  CloseDatabase(Database)
  
  If DatabaseError() = ""
    MessageRequester("Information","Création de la base terminée")
  Else
    MessageRequester("Information","Erreur lors de la création de la table 'medias'" + #CRLF$ + DatabaseError())
  EndIf
Else
  MessageRequester("Erreur","Erreur lors de la création de la base de données" + Chr(13) + DatabaseError() )
EndIf
debug a écrit :IdMedia INTEGER PRIMARY KEY,media BLOB,Name TEXT)
Comme vous pouvez le voir, il manque CREATE TABLE medias (

j'ai la solution d'initialisé la variable ReqSQL de cette manière

Code : Tout sélectionner

 ReqSql = "CREATE TABLE medias (IdMedia INTEGER PRIMARY KEY, media BLOB, Name TEXT)"
et ça fonctionne mais pour plus de clarté je préfère la méthode précédente.

Pouvez vous tester et me dire si vous rencontrez ce problème ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Souci d'initialisation de String

Message par Patrick88 »

5.40 LTS (x64) et 5.31 (x64)

trace = "CREATE TABLE medias (IdMedia INTEGER PRIMARY KEY,media BLOB,Name TEXT)"
et message "Création de la base terminée"

pat
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Souci d'initialisation de String

Message par falsam »

Merci Pat. Sujet clos. j'ai fermé PureBasic et ouvert à nouveau. Plus de souci. !!

J'aurais du faire ça plus tôt.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: [RESOLU] Souci d'initialisation de String

Message par Marc56 »

Sachant que '+' et ',' en PB annulent le saut de ligne (comme '_' en VB) tu peux rendre ton code plus lisible comme ceci: :D

Code : Tout sélectionner

Define.s ReqSql

ReqSql = "CREATE TABLE medias"              + 
         "("                                + 
         "IdMedia INTEGER PRIMARY KEY,"     +   ; Identifiant enregistrement
         "media BLOB,"                      +   ; Contenu binaire
         "Name TEXT"                        +   ; Libellé de l'opération         
         ")"

Debug ReqSql
Ça fait même une seule opération de concaténation.
Et comme le commentaire est ignoré il ne gène pas, même à cet endroit.

:wink:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [RESOLU] Souci d'initialisation de String

Message par falsam »

Hum .... Marc tu a peut être vu que c'est ce que je fais dans le code ^^

Le souci était pas là. C'est mon IDE qui a bugué. La fermeture de celui çi et ouverture par la suite a été la solution pour éliminer ce souci.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: [RESOLU] Souci d'initialisation de String

Message par Marc56 »

falsam a écrit :Hum .... Marc tu a peut être vu que c'est ce que je fais dans le code ^^
J'ai vu ça

Code : Tout sélectionner

ReqSql = "CREATE TABLE medias ("
ReqSql + "IdMedia INTEGER PRIMARY KEY," ;Identifiant enregistrement
ReqSql + "media BLOB,"                  ;Contenu binaire
ReqSql + "Name TEXT"                    ;Libellé de l'opération
ReqSql + ")"

Debug ReqSql
Ça fait pareil mais question lisibilité: beurk :mrgreen:

Beaucoup moins de chance de se tromper en présentant comme ça (à mon avis) :wink:

Code : Tout sélectionner

ReqSql = "CREATE TABLE medias"              + 
         "("                                + 
         "IdMedia INTEGER PRIMARY KEY,"     +   ; Identifiant enregistrement
         "media BLOB,"                      +   ; Contenu binaire
         "Name TEXT"                        +   ; Libellé de l'opération         
         ")"
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [RESOLU] Souci d'initialisation de String

Message par falsam »

Marc56 a écrit :beurk
Mais heuuuu ..... arrête de m’embêter ^^
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre