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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Auteur Sujet :

[VB] Tout résolu sauf une dernière pertinente ^^

n°906769
zytrahus5
wait what?
Posté le 24-11-2004 à 16:38:30  profilanswer
 

Reprise du message précédent :
:cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:


---------------
http://www.zytratech.com
mood
Publicité
Posté le 24-11-2004 à 16:38:30  profilanswer
 

n°906770
zytrahus5
wait what?
Posté le 24-11-2004 à 16:39:06  profilanswer
 

Arjuna a écrit :

PS: Pour éviter ce genre de problème, écrit toujours en toute première ligne de chacun de tes modules VB :
 

Option Explicit


 
=> VB plantera lors de tout appel à une variable non déclarée avec un "Dim"
Du coup il n'y a plus de confusion possible entre deux orthographes possibles pour une même variable, puisque la syntaxe fausse plantera ;)

merci :jap:


---------------
http://www.zytratech.com
n°906771
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 16:39:08  profilanswer
 

De quoi ? Me dit pas que c'est ça le problème :D

n°906775
zytrahus5
wait what?
Posté le 24-11-2004 à 16:42:43  profilanswer
 

Arjuna a écrit :

De quoi ? Me dit pas que c'est ça le problème :D

:whistle: :ange:
 
si c'était bien ça :/ :pfff: je dirai pas depuis combien de temps je m'arrachais les cheveux dessus :d
 
 
 
j'ai testé ce bout de code pour convertir le binByte en string pour pouvoir hasher, mais il n'a pas l'air de fonctionner, j'ai cherché hier des infos sur ta fonction Cstr et CstrB mais pas évident à utiliser


sAns = StrConv(binByte, vbUnicode)
iPos = InStr(sAns, Chr(0))
If iPos > 0 Then sAns = Left(sAns, iPos - 1)


---------------
http://www.zytratech.com
n°906810
zytrahus5
wait what?
Posté le 24-11-2004 à 17:08:25  profilanswer
 

Bon avec cstr ça marche en fait [:boidleau]
 
seul hic, c'est que c'est trop dur a faire pour le PC on dirait :'D
 
pourtant le fichier fait que 170 Ko  
 
j'ai fait ça :
 

dim checksum as String
 
For h = 1 To fl
        CheckSum = CheckSum & CStr(binByte(h))
Next h


 
fl ~ 1790000 :d
 
c beaucoup trop pour lui ? :ange:


---------------
http://www.zytratech.com
n°906815
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:11:14  profilanswer
 

Y'a pas un "0" de trop ?
 
Sinon, attends, je vais voir s'il n'y a pas une fonction qui fait ça, parceque ça m'étonne qu'il n'y en ait pas.

n°906817
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:12:02  profilanswer
 

tu veux pas réécrire ton prog en C# ? :whistle:
 
Parceque j'ai pas VB6 sur mon poste, donc c'est pas évident de voir la liste des fonctions VB :D

n°906827
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:19:34  profilanswer
 

Essaie de faire :
 
CheckSum = join(binByte)
 
Avec beaucoup de pot ça va marcher.
 
http://www.vbce.com/code/specifics/join.html
 
S'il rajoute comme un con un séparateur (un espace par exemple) essaie join(binByte, "" )
 
Mais je ne sais pas si VB va savoir convertir un array de byte en array de strings à la volée... :/


Message édité par Arjuna le 24-11-2004 à 17:20:48
n°906829
zytrahus5
wait what?
Posté le 24-11-2004 à 17:20:35  profilanswer
 

Arjuna a écrit :

Y'a pas un "0" de trop ?
 
Sinon, attends, je vais voir s'il n'y a pas une fonction qui fait ça, parceque ça m'étonne qu'il n'y en ait pas.

si un zero de trop :)
 
179Ko


---------------
http://www.zytratech.com
n°906830
zytrahus5
wait what?
Posté le 24-11-2004 à 17:20:57  profilanswer
 

Arjuna a écrit :

tu veux pas réécrire ton prog en C# ? :whistle:
 
Parceque j'ai pas VB6 sur mon poste, donc c'est pas évident de voir la liste des fonctions VB :D

:d :d


---------------
http://www.zytratech.com
mood
Publicité
Posté le 24-11-2004 à 17:20:57  profilanswer
 

n°906832
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:21:57  profilanswer
 

Cela dit, 179 Ko, c'est pas tout petit, mais je suis étonné que la boucle soit aussi lente... Bizarre :)
 
Si le Join merde, essaye ton précédent code en utilisant ChrB(binByte(i)) plutôt que le CStr()

n°906833
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:22:43  profilanswer
 


Non, mais je dis ça parceque en C# y'a toutes les fonctions nécessaires pour passer d'une string à un array de bytes et vice versa :D

n°906834
zytrahus5
wait what?
Posté le 24-11-2004 à 17:23:13  profilanswer
 

il ne veut pas de join(binByte) ni avec le , "" en plus


---------------
http://www.zytratech.com
n°906837
zytrahus5
wait what?
Posté le 24-11-2004 à 17:25:04  profilanswer
 

Arjuna a écrit :

Cela dit, 179 Ko, c'est pas tout petit, mais je suis étonné que la boucle soit aussi lente... Bizarre :)
 
Si le Join merde, essaye ton précédent code en utilisant ChrB(binByte(i)) plutôt que le CStr()

:d je viens d'essayer avecn chrB il mouline là depuis 40secondes :d et il a pas l'air d'y arriver :d
 
 
a si ça y est :d
 
1 minutes :d
 
faudrait que je puisse optimiser ça je crois [:le kneu]


---------------
http://www.zytratech.com
n°906838
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:25:45  profilanswer
 

Il ne te reste plus que le ChrB() du coup :/ Avec un peu de pot ça sera plus rapide que le CStr() mais j'y crois guère.

n°906840
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:26:57  profilanswer
 

Tu veux pas faire autrement qu'avec un CheckSum ? Ca sera plus simple :D
 
Style le script de démarrage et l'exe sont centralisés sur un serveur et personne n'a le droit d'écrire dessus :)

n°906842
zytrahus5
wait what?
Posté le 24-11-2004 à 17:27:29  profilanswer
 

Arjuna a écrit :

Il ne te reste plus que le ChrB() du coup :/ Avec un peu de pot ça sera plus rapide que le CStr() mais j'y crois guère.

c'est plus rapide, car avec le cstr j'ai pas réussi a aller au bout de la boucle une seule fois (arreté avant)
 
là il y arrive, lui faut 45s pour le faire, mais pour l'application du logiciel c'est indispensable malheureusement :/


---------------
http://www.zytratech.com
n°906847
zytrahus5
wait what?
Posté le 24-11-2004 à 17:29:08  profilanswer
 

Arjuna a écrit :

Tu veux pas faire autrement qu'avec un CheckSum ? Ca sera plus simple :D
 
Style le script de démarrage et l'exe sont centralisés sur un serveur et personne n'a le droit d'écrire dessus :)

oui mais ça implique d'avoir le net sous la main, et ça fait appelle à des notions supplémentaires que j'ai clairement pas [:rhetorie du chaos] :d
 
je pensais pas que c'etait si long de convertir un 179Ko de bin en caracteres :d


---------------
http://www.zytratech.com
n°906848
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:29:17  profilanswer
 

Bah il te reste la solution de trouver un composant de checksum qui gère un array de bytes...
 
C'est d'ailleurs insensé que le tiens bosse avec une string.

n°906849
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:31:06  profilanswer
 

zytrahus5 a écrit :

oui mais ça implique d'avoir le net sous la main, et ça fait appelle à des notions supplémentaires que j'ai clairement pas [:rhetorie du chaos] :d
 
je pensais pas que c'etait si long de convertir un 179Ko de bin en caracteres :d


C'est pas la conversion qui est lente.
 
Par exemple, met ça :

Code :
  1. For h = 1 To fl
  2.         CheckSum = ChrB(binByte(h))
  3. Next h


 
Je suis certain que c'est quasi instantané.

n°906850
zytrahus5
wait what?
Posté le 24-11-2004 à 17:31:32  profilanswer
 

Arjuna a écrit :

Bah il te reste la solution de trouver un composant de checksum qui gère un array de bytes...
 
C'est d'ailleurs insensé que le tiens bosse avec une string.

parce que c'est moi qui l'a fait [:rofl]
 
chu vraiment une merde :lol: :cry:


---------------
http://www.zytratech.com
n°906851
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:31:36  profilanswer
 

En fait c'est la concaténation de chaine qui pose problème.

n°906853
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:32:11  profilanswer
 

zytrahus5 a écrit :

parce que c'est moi qui l'a fait [:rofl]
 
chu vraiment une merde :lol: :cry:


Bah faut le refaire :D

n°906854
zytrahus5
wait what?
Posté le 24-11-2004 à 17:33:19  profilanswer
 

Arjuna a écrit :

C'est pas la conversion qui est lente.
 
Par exemple, met ça :

Code :
  1. For h = 1 To fl
  2.         CheckSum = ChrB(binByte(h))
  3. Next h


 
Je suis certain que c'est quasi instantané.


 
c'est quasiment le code avec lequel je tourne là :
 

For h = 1 To fl
        Check = Check & ChrB(binByte(h))
    Next h


 
mon PC n'est pas une fury certes :d mais ~45s quand meme :/


---------------
http://www.zytratech.com
n°906855
zytrahus5
wait what?
Posté le 24-11-2004 à 17:33:34  profilanswer
 

Arjuna a écrit :

En fait c'est la concaténation de chaine qui pose problème.

ahhhhh ok je teste


---------------
http://www.zytratech.com
n°906858
zytrahus5
wait what?
Posté le 24-11-2004 à 17:34:39  profilanswer
 

Arjuna a écrit :

Bah faut le refaire :D

c'est une solution effectivement :d
 
le truc c'est qu'il me sert aussi a hasher une chaine cryptée pour générer une ID (a la base c'etait juste pour celà, donc string suffisant, mais apres j'ai étendu la protection a l'exe)


---------------
http://www.zytratech.com
n°906859
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:35:48  profilanswer
 

Essaie de faire ça pour la concaténation, ça ira peut-être plus vite.
 
http://www.15seconds.com/howto/pg000929.htm
 
ceci dit, l'optimization s'applique à l'ASP, qui n'est pas un VB réel, donc le VB s'en sort peut-être différement.
 
ha, et pour que la class en question soit vraiment performante, n'oublie pas de typer toutes les vartiables, on gagne à l'aise 20% sur le tmeps d'execution global.


Message édité par Arjuna le 24-11-2004 à 17:39:18
n°906860
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:37:13  profilanswer
 

zytrahus5 a écrit :

c'est une solution effectivement :d
 
le truc c'est qu'il me sert aussi a hasher une chaine cryptée pour générer une ID (a la base c'etait juste pour celà, donc string suffisant, mais apres j'ai étendu la protection a l'exe)


Bah alors surcharge ta fonction (enfin, crée une nouvelle méthode à ton objet) pour qu'il sâche bosser avec une string et un array de bytes :))

n°906864
zytrahus5
wait what?
Posté le 24-11-2004 à 17:38:39  profilanswer
 

Arjuna a écrit :

Essaie de faire ça pour la concaténation, ça ira peut-être plus vite.
 
http://www.15seconds.com/howto/pg000929.htm

tu avais raison, sans la concaténation c'est instantané !
 
je peux pas faire ça ? :
 

Dim Check() As String
 
For h = 0 To fl
        Check(h) = ChrB(binByte(h))
Next h


 
il me sort une erreur : out of range [:wam]
 
je pensais que faire ça et assembler tous les tableaux de string ?


---------------
http://www.zytratech.com
n°906867
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 17:40:29  profilanswer
 

c'est qui ce check(h) :o :)
 
fait juste une string bête que tu écrse, histoire de savoir si c'est bien la concaténation qui est lente, la lecture du fichier, ou le parcours du tableau

n°906871
zytrahus5
wait what?
Posté le 24-11-2004 à 17:42:16  profilanswer
 

han j'ai peut etre une idée :o
 
 
au lieu de convertir directement en string, je peux pas convertir en long par exemple ?
une fois que j'ai mon tableau de long je les ajoute, ça me donne un gros nombre que je converti en string et je le hash ensuite.
 
a priori si l'addition est plus rapide que la concaténation ça devrait bien plus rapide non ?
il est fortement improbable qu'une modification de l'exe entraine une somme des long identique a celle correspondant a un exe non modifié


---------------
http://www.zytratech.com
n°906873
zytrahus5
wait what?
Posté le 24-11-2004 à 17:43:21  profilanswer
 

Arjuna a écrit :

c'est qui ce check(h) :o :)
 
fait juste une string bête que tu écrse, histoire de savoir si c'est bien la concaténation qui est lente, la lecture du fichier, ou le parcours du tableau

oui j'ai essayé avec un string écrasé, résultat : instantanné << 1s en tous cas.
 
 
 
le check(h) bah c'etait pour indexer un tableau de string


---------------
http://www.zytratech.com
n°906892
zytrahus5
wait what?
Posté le 24-11-2004 à 18:08:32  profilanswer
 

ce que j'ai fait avec le LONG a l'air de marcher :jap:
 
je sais pas si ça sera bien fiable :d j'espere :d


---------------
http://www.zytratech.com
n°906914
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 18:37:13  profilanswer
 

C'est pas très fiable, mais c'est une solution qui marche.
 
Moi j'avais fait un truc similaire, et pour améliorer la fiabilité, j'avais fait plusieurs checksum (sauf que c'était pas hashé ensuite ;))
 
-> Somme des toutes les lignes
-> Somme d'une ligne sur deux (une fois en partant de 1 et une fois en partant de 2)
-> Somme des nombres paires
-> Somme des nombres impaires
 
Avec ça, même une modif "intelligente" aura du mal à passer, et t'as même pas besoin de faire un checksum derrière, parceque même en connaissant les contraintes, il est quasi impossible de passer à travers les goutes.
 
PS: tu peux faire tout ça en une seule passe hein, pas besoin de parcourir 25 fois ton array ;)


Message édité par Arjuna le 24-11-2004 à 18:38:12
n°906916
zytrahus5
wait what?
Posté le 24-11-2004 à 18:41:28  profilanswer
 

pas bête [:romf] :) :) je vais complexifier la chose !
 
me reste plus qu'à programmer le screen shot (print ecran de la fenetre du log + enregistrement en BMP ou PNG)
 
et j'aurais fini mon programme enfin !!! :love:


---------------
http://www.zytratech.com
n°906922
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 18:53:58  profilanswer
 

Demande à antp (je crois que c'est lui) il a fait un soft qui fait ça. Et je crois même que les sources sont dispos :)

n°906923
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 18:54:51  profilanswer
 

Ha, non, c'est "The Real Moins Moins" qui a fait le soft.
 
http://pngshot.sourceforge.net/

n°906924
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 18:55:38  profilanswer
 

Doit y avoir moyen de le lancer depuis VB, ou alors de lui demander d'en faire une version DLL utilisable depuis VB :)

n°906925
zytrahus5
wait what?
Posté le 24-11-2004 à 18:55:48  profilanswer
 

han je vais aller voir ça [:romf]


---------------
http://www.zytratech.com
n°906928
zytrahus5
wait what?
Posté le 24-11-2004 à 18:59:10  profilanswer
 

arf spa du VB :d :d :d :whistle:


---------------
http://www.zytratech.com
n°906933
zytrahus5
wait what?
Posté le 24-11-2004 à 19:02:29  profilanswer
 

j'ai trouvé une source en VB sur vbfrance :
 

Private Sub Copie_Ecran(ByVal Fichier As String, _
                        ByVal Qualité As Integer)
 
    ' Cette routine permet de recopier l'image actuelle de l'écran dans une PictureBox
    ' et de sauver cette image dans un fichier BMP
 
    Dim hdc As Long, hWnd As Long
    Const ScrCopy = &HCC0020
 
    On Error Resume Next
    Screen.MousePointer = vbHourglass
     
    ' Efface les éventuelles anicennes copies d'écran
    If Dir(Fichier & ".bmp" ) <> "" Then _
        Kill (Fichier & ".bmp" )
    If Dir(Fichier & ".jpg" ) Then _
        Kill (Fichier & ".jpg" )
    DoEvents
     
    ' Récupère le handle de l'image du Bureau,
    ' la recopie bit à bit dans la forme CopieEcran
    ' et la sauve en BMP
    Load frmCopieEcran
    frmCopieEcran.WindowState = vbMaximized
    hWnd = GetDesktopWindow()
    hdc = GetDC(hWnd)
    BitBlt frmCopieEcran.hdc, 0, 0, Screen.Width / Screen.TwipsPerPixelX, _
                                    Screen.Height / Screen.TwipsPerPixelY, hdc, 0, 0, ScrCopy
    DoEvents
    SavePicture frmCopieEcran.Image, Fichier & ".bmp"
    DoEvents
    Unload frmCopieEcran
 
    ' Conversion de l'image au format JPG pour prendre moins de place
    Dim Capture As New aDIBSection
    Set Capture = New aDIBSection
    Capture.CreateFromPicture LoadPicture(Fichier & ".bmp" )
    Call SaveJPG(Capture, Fichier & ".jpg", Qualité)
    DoEvents
    Set Capture = Nothing
    Screen.MousePointer = vbDefault
     
End Sub


 
 
c'est du BMP, ça a l'air tout simple, vais essayer de la modder pour prendre le print écran sur la fenetre active uniquement.
 
Doit bien y avoir des attributs accessibles pour les dimensions de la fenetre et les positions non?


---------------
http://www.zytratech.com
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Résolu]Difference entre Mozilla Firefox et IE2 formulaires collés l'un a l'autre[resolu]
probleme de redirection [resolu][résolu] sous-menus dynamique et evennement onClick
pb de filets noires avec la librairie GD[resolu]menu deroulant ->selected avec les sessions[resolu]
souci de CSS et a:visited [résolu]téléchargement de fichier distant [résolu]
tester l'existence d'un fichier sur le serveur [résolu]fonction mail() -> adresse du messager[resolu]
Plus de sujets relatifs à : [VB] Tout résolu sauf une dernière pertinente ^^


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