Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2615 connectés 

  FORUM HardWare.fr
  Programmation

  [VISUAL BASIC] Prob sur manip chaine

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VISUAL BASIC] Prob sur manip chaine

n°51064
BillBoule
Posté le 04-08-2001 à 15:14:25  profilanswer
 

Voila j'ai un code qui ressemble a ça :
Dim var1 as string * 260
 
var1 = "salut"
 
Dim taille as integer
 
taille = len(var1)
c'est là qu'est le problem parce qu'il me dit taille = 260
Est-ce que qqn sait comment je peux prendre seulement la taille de la chaine sans changer la declaration de la var1

mood
Publicité
Posté le 04-08-2001 à 15:14:25  profilanswer
 

n°51065
macray
Posté le 04-08-2001 à 15:39:40  profilanswer
 

BillBoule a écrit a écrit :

Voila j'ai un code qui ressemble a ça :
Dim var1 as string * 260
 
var1 = "salut"
 
Dim taille as integer
 
taille = len(var1)
c'est là qu'est le problem parce qu'il me dit taille = 260
Est-ce que qqn sait comment je peux prendre seulement la taille de la chaine sans changer la declaration de la var1  




 
Oui, c'est trés simple, il faut que tu enlève 260, car tu crée un variable de 260 caractére auquel tu va affecter une valeur chaine pour et enfin lui demander le nombre de caractéres, cela se mord la queue !!! :??:  
 
Dim var1 as string  
Dim taille as integer
var1 = "salut"
taille = len(var1)
 
tu enlève 260 (même string le cas échéant) et cela devrait marché.
 
Nb : met toutes les variables ensemble, ainsi que des commentaires. il tout de même plus simple
 
taille = len("salut" )
msgbox(taille)
 
a+ :pt1cable:

n°51068
BillBoule
Posté le 04-08-2001 à 16:09:44  profilanswer
 

En fait c'est plus compliqué que ça, j'utilise un type WIN32_FIND_DATA. var1 estdans mon exemple precedent la variable cFileName avec MAX_PATH = 260 ceci pour utiliser les api win findfirstfile et findnextfile donc je ne peux pas enlever le string * MAX_PATH
 
Public Type WIN32_FIND_DATA
        dwFileAttributes As Long
        ftCreationTime As FILETIME
        ftLastAccessTime As FILETIME
        ftLastWriteTime As FILETIME
        nFileSizeHigh As Long
        nFileSizeLow As Long
        dwReserved0 As Long
        dwReserved1 As Long
        cFileName As String * MAX_PATH
        cAlternate As String * 14
End Type

n°51070
macray
Posté le 04-08-2001 à 16:15:51  profilanswer
 

Alors ne t'emmerde pas plus que cela, tu n'as qu'a allé sur le site
 
www.vbfrance.com
 
il est vraiment excellent pour des exemples de programmes, ou bien sur cette page ci
 
www.vbfrance.com/visitelien.asp?Val=59&ValB=L
 
tu as toute une chier d'API windows, y compris me semble t-il la fonction que tu désires...
 
bonne chance :hello:   :ouch:

n°51076
avv
Posté le 04-08-2001 à 17:43:35  profilanswer
 

Taille = len(trim(var1))
 
Trim enlève tout les blancs

n°51086
BillBoule
Posté le 04-08-2001 à 21:54:40  profilanswer
 

Le len(trim(var1)) me renvois tjrs 260, ça ne marche pas
Et je n'ai pas de prob avec l'uttilisation des api, je veux seulement recuperer le nom des fichier sans leur extension. voici le code sans les declare api:
 
    Dim FileSearch As Long
    Dim FindData As WIN32_FIND_DATA
    Dim taille as integer
 
 'Recherche des fichiers a copier
 FileSearch = FindFirstFile("c:\temp\*.*", FindData)
 If FileSearch <> INVALID_HANDLE_VALUE Then
        Do
            taille = Len(Trim(FindData.cFileName))
            MsgBox taille
            KeyName = Left(FindData.cFileName, taille - 4)
            MsgBox KeyName
     
    Loop While (FindNextFile(FileSearch, FindData) <> 0)
 
La fonction me retrouve bien le nom des fichier mais le travail sur la chaine FindData.cFileName ne donne rien

n°51100
nur
Posté le 05-08-2001 à 08:27:54  profilanswer
 

Dim var1 as string * 260
Dim taille as integer
dim temp
 
 
var1 = "salut"
temp=var1
taille = len(trim(temp))
msgbox(taille)

n°51101
Kyle_Katar​n
Posté le 05-08-2001 à 09:35:15  profilanswer
 

contrairement à ce qui a été bêtement dit précédement, LAISSE le string *260
 
Si tu mets pas string, ta var est déclarée en "variant" (qui te permet de ne pas avoir à te soucier des types car le cast est auto mais qui pompe de la mémoire comme c'est pas permis, puis c'est pas rigoureux). De plus, ton *260 "bloque" l'occupation mémoire de ta string à 260 caracts. Sinon, il réserve la taille maximale (je ne la connait pas par coeur...) pour un string....même si tu n'utilise qu'un caractère !
 
Par contre une telle string est initialisée apr VB à space(lng) où lng est la longueur spécifiée... Penses donc à mettre des "trim".

n°51106
BillBoule
Posté le 05-08-2001 à 11:14:43  profilanswer
 

ça ne marche toujours pas les gars, je commence a deprimer serieusement.
Je doit fournir un truc operationnel ce soir, ça urge. y'a personne qui a deja fait ça ????

n°51109
macray
Posté le 05-08-2001 à 11:42:03  profilanswer
 

BillBoule a écrit a écrit :

ça ne marche toujours pas les gars, je commence a deprimer serieusement.
Je doit fournir un truc operationnel ce soir, ça urge. y'a personne qui a deja fait ça ????  



As tu essayer de mettre un point d'arret (rond rouge) au niveau de "keyname = Left(FindData.cFileName, taille - 4)", cela t'aiderais a trouver le problème et de suivre le code au fur et a mesure...
 
Autre conseil si tu peut le faire, remplace l'affichage des messages (msgbox) temporairement par une liste (list1.additem ....), cela est beaucoup plus rapide pour faire des diagnostics.  
 
Je viens de faire ton code et effectivement il m'affiche ceci dans les premiers lignes
 
260
.
260
..
260
getrightkey.exe
260
fichier.exe
 
et aisni de suite...
 
 
 
nb: tu peut le supprimer les points rouge au cours de l'exécution sans aucun problème
 
 
 
voila et bonne chance :benetton:

mood
Publicité
Posté le 05-08-2001 à 11:42:03  profilanswer
 

n°51111
nur
Posté le 05-08-2001 à 11:50:05  profilanswer
 

ça ne marche pas avec une variable temporaire comme je te l'ai deja ecrit ??

n°51112
macray
Posté le 05-08-2001 à 12:00:32  profilanswer
 

ton problème vient de la constante
 MAX_PATH = 260
lorsque tu arrette l'éxécution ta variable taille= 260 et n'ont pas le Nb de caractére que tu souhaite...
 
essaye de faire une boucle en lui demanadnt de tourner de gauche à droite, et qu'ils s'arrettent des qu'il trouvent un point ".", essaye...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [VISUAL BASIC] Prob sur manip chaine

 

Sujets relatifs
php: prob de classePB Visual Studio et IE
Visual Basic - Récupérer les initiales d'un String[C++/Visual C++] Copier contenu Clipboard dans un fichier
[Visual C++] Common Dialog : CFileDialog, pb noms de fichiers[Visual C++] Font ???
question de Visual Basic[Visual C++]La fonction TRACE ?
Plus de sujets relatifs à : [VISUAL BASIC] Prob sur manip chaine


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR