OVH Cloud OVH Cloud

opération sur un tableau complet en une seule fois?

38 réponses
Avatar
marc.dufresne
bonjour
on peut faire correspondre deux tableaux ex tablo1()=tablo2()
mais peut on effectuer une opération sur un tableau complet comme du genre:
tablo1()=tablo2()+5 (ajouter 5 à la valeur de chaque élément du tablo2). Je
sais que ce que j'ai écrit n'est pas valable mais y aurait-il un moyen
quelconque? En fait trouver une méthode utra rapide pour changer toutes les
valeurs d'un tableau!

merci d'avance

8 réponses

1 2 3 4
Avatar
jean-marc
Hello,

c'est impécable , c'est très rapide j'affiche une photo de 1280*960 en


11
secondes avec 15 variations différentes!



Ca me parait bien!

j'ai remarquè une petite différence entre le mode non compilé en VB et


le
mode compilé, bizarement en non compilé c'est un peu plus rapide!! ça


te
parait normal???



Bof, non, mais si la différence est petite, pourquoi pas.

PicBits2(1, X, Y) = 216 + ((PicBits(1, X, Y) - 216) * coef)
PicBits2(2, X, Y) = 233 + ((PicBits(2, X, Y) - 233) * coef)
PicBits2(3, X, Y) = 236 + ((PicBits(3, X, Y) - 236) * coef)
216,233,236 étant la valeur rgb de ma couleur de fond donc comme


variable
rajouter Rfond,Gfond,Bfond



Non, la ça ne va plus. Une des choses qui font que la dll
est très rapide, c'est qu'on peut en C traiter le tableau
à 3 dimensions comme un seul tableau, on parcourt donc le
tout en une seule boucle. On pourrait faire ça, mais c'est
pénible pour calculer les offsets... Bref, ça je ne fais
pas, je n'ai ni le temps ni l'envie.

PicBits2()"9+((PicBits()-229)*coef)



Ca par contre c'est possible, je ferais quand j'aurais 5 minutes.

Question subsidiaire: as tu Visual Studio, avec
Visual C++ installé?

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
marc.dufresne
rebonsoir
et merci pour ta prompte réponse

Non, la ça ne va plus. Une des choses qui font que la dll
est très rapide, c'est qu'on peut en C traiter le tableau
à 3 dimensions comme un seul tableau, on parcourt donc le
tout en une seule boucle. On pourrait faire ça, mais c'est
pénible pour calculer les offsets... Bref, ça je ne fais
pas, je n'ai ni le temps ni l'envie.



Je me doutais un peu . ça ne sert à rien de faire quelque chose de compliqué
si on y gagne pas vraiment



PicBits2()"9+((PicBits()-229)*coef)



Ca par contre c'est possible, je ferais quand j'aurais 5 minutes.



C'est vraiment si tu as le temps , ça n'a pas beaucoup d'importance , ce
n'était que pour fignoler mon application , mais pour moi l'essentiel c'est
compris un peu le principe.



Question subsidiaire: as tu Visual Studio, avec
Visual C++ installé?



Non je n'ai que VB6 et j'ai téléchargé "Bloodshed Dev-C++" quand tu m'as
parlé de programation en C mais je n'ai pas su m'en sortir.
Je fais un peu de programation comme ça pour mon plaisir , mais j'ai pas
souvent le temps de m'y atteler,(pltôt ça ne plait pas trop à mon entourage
de passer mes soirées devant un micro)


Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;



Avatar
marc.dufresne
Rebonsoir
tu me répondais pour enregistrer correctement la dll ceci

<La déclaration, c'est comme indiqué. Autre moyen, beaucoup plus
<propre:
<1) copier la dll dans ton répertoire Windowssystem ou system32
<2) La registrer avec regsvr32
<3) changer la déclaration en VB en mettant uniquement le nom de la
<dll, sans mention de chemin.

j'ai donc essayé d'enregistrer directement la dll comme ceci
regsvr32.exe C:WINDOWSsystem32quickarray.dll
ou comme ceci
regsvr32.exe "C:WINDOWSsystem32quickarray.dll"
mais toujours problème :
"quickarray.dll a été chargé mais le point d'entrée DllRegisterServer est
introuvable. Ce fichier ne peut pas être enregistré."

merci
Avatar
jean-marc
"marc.dufresne" a écrit dans le
message de news:4491c8f8$0$29642$
rebonsoir
et merci pour ta prompte réponse

> Non, la ça ne va plus. Une des choses qui font que la dll
> est très rapide, c'est qu'on peut en C traiter le tableau
> à 3 dimensions comme un seul tableau, on parcourt donc le
> tout en une seule boucle. On pourrait faire ça, mais c'est
> pénible pour calculer les offsets... Bref, ça je ne fais
> pas, je n'ai ni le temps ni l'envie.

Je me doutais un peu . ça ne sert à rien de faire quelque chose de


compliqué
si on y gagne pas vraiment


>
>> PicBits2()"9+((PicBits()-229)*coef)
>
> Ca par contre c'est possible, je ferais quand j'aurais 5 minutes.

C'est vraiment si tu as le temps , ça n'a pas beaucoup d'importance ,


ce
n'était que pour fignoler mon application , mais pour moi l'essentiel


c'est
compris un peu le principe.



Hello,

VOila, la nouvelle dll est disponible ici:
http://users.skynet.be/candide/bench/benchb/benchbytedll.html

tout y est expliqué.

NOTE: Pour une déclaration plus propre (réponse à ton autre post):

Je disais qu'il fallait la registrer, => JE ME TROMPAIS.

Il n'est bien sur pas nécessaire de la registrer, il suffit de la copier
dans le répertoire system de Windows, par exemple sous XP:
windowsSystem32

Du coup, plus besoin de mettre de chemin dans le prototype, on fait
juste comme ça:


Private Declare Sub GradientTabloByte Lib "quickarray.dll" Alias
"" _
(PicBits2 As Byte, _
PicBits As Byte, _
ByVal nbElem As Long, _
ByVal Coeff As Double)

Nouveau prototype pour la nouvelle fonction:

Private Declare Sub GradientTabloByte2 Lib "quickarray.dll" Alias
"" _
(PicBits2 As Byte, _
PicBits As Byte, _
ByVal nbElem As Long, _
ByVal Coeff As Double)


Et ça marche sans aucun problème :-)

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
jean-marc
"marc.dufresne" a écrit dans le
message de news:4491c8f8$0$29642$
rebonsoir



Re hello,

> Question subsidiaire: as tu Visual Studio, avec
> Visual C++ installé?
>
Non je n'ai que VB6 et j'ai téléchargé "Bloodshed Dev-C++" quand tu


m'as
parlé de programation en C mais je n'ai pas su m'en sortir.



Voici un très bon moyen (un bon environnement et un compilateur) pour
faire tes propres dll:
http://www.pobot.org/Utiliser-MinGW-pour-developper-la.html

Il faut lire la doc et bien regarder le petit exemple en bas de page.
Avec ceci, tu disposes d'un moyen simple et gratuit de développer
tes propres dll.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
marc.dufresne
bonsoir
vraiment merci
entre les deuxfonctions il y a très peu de différence 300 milisecondes sur
30 passages donc ça ne se voit pas !
mais la différence est plus importante entre compilée et sous VB un peu plus
de 2 secondes toujours sur 30 passages, pas bien important mais je croyais
qu'un programme exécuté sous VB était plus long qu'un programme compilé?!

et pourquoi me demandais tu :"Question subsidiaire: as tu Visual Studio,
avec Visual C++ installé?" ?

Pour enregistrement de la dll c'est impécable et simple

encore merci

"jean-marc" a écrit dans le message de news:
4492f82b$0$28393$
"marc.dufresne" a écrit dans le
message de news:4491c8f8$0$29642$
rebonsoir
et merci pour ta prompte réponse

> Non, la ça ne va plus. Une des choses qui font que la dll
> est très rapide, c'est qu'on peut en C traiter le tableau
> à 3 dimensions comme un seul tableau, on parcourt donc le
> tout en une seule boucle. On pourrait faire ça, mais c'est
> pénible pour calculer les offsets... Bref, ça je ne fais
> pas, je n'ai ni le temps ni l'envie.

Je me doutais un peu . ça ne sert à rien de faire quelque chose de


compliqué
si on y gagne pas vraiment


>
>> PicBits2()"9+((PicBits()-229)*coef)
>
> Ca par contre c'est possible, je ferais quand j'aurais 5 minutes.

C'est vraiment si tu as le temps , ça n'a pas beaucoup d'importance ,


ce
n'était que pour fignoler mon application , mais pour moi l'essentiel


c'est
compris un peu le principe.



Hello,

VOila, la nouvelle dll est disponible ici:
http://users.skynet.be/candide/bench/benchb/benchbytedll.html

tout y est expliqué.

NOTE: Pour une déclaration plus propre (réponse à ton autre post):

Je disais qu'il fallait la registrer, => JE ME TROMPAIS.

Il n'est bien sur pas nécessaire de la registrer, il suffit de la copier
dans le répertoire system de Windows, par exemple sous XP:
windowsSystem32

Du coup, plus besoin de mettre de chemin dans le prototype, on fait
juste comme ça:


Private Declare Sub GradientTabloByte Lib "quickarray.dll" Alias
"" _
(PicBits2 As Byte, _
PicBits As Byte, _
ByVal nbElem As Long, _
ByVal Coeff As Double)

Nouveau prototype pour la nouvelle fonction:

Private Declare Sub GradientTabloByte2 Lib "quickarray.dll" Alias
"" _
(PicBits2 As Byte, _
PicBits As Byte, _
ByVal nbElem As Long, _
ByVal Coeff As Double)


Et ça marche sans aucun problème :-)

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;



Avatar
jean-marc
"marc.dufresne" a écrit dans le
message de news:4493ceff$0$1339$
bonsoir



Hello,

vraiment merci



De rien :-)

entre les deuxfonctions il y a très peu de différence 300 milisecondes


sur
30 passages donc ça ne se voit pas !



Oui, c'est assez normal.

mais la différence est plus importante entre compilée et sous VB un


peu plus
de 2 secondes toujours sur 30 passages, pas bien important mais je


croyais
qu'un programme exécuté sous VB était plus long qu'un programme


compilé?!

C'est très étrange, sans doute des options de compilation, ou qq chose
du même genre. Je ne sais pas trop en fait.

et pourquoi me demandais tu :"Question subsidiaire: as tu Visual


Studio,
avec Visual C++ installé?" ?



Parce que alors tu pourrais faire toi même tes dll, faire des essais,
etc.
Mais comme tu ne l'as pas, tu peux utiliser ceci qui est gratuit et tout
simple, et permet de faire la même chose. Si tu ne connais pas le
langage C,
achat indispensable, a posséder absolument (lire et relire!):
Le langage C - Norme ANSI
Brian W. Kernighan
Dennis M. Ritchie :
Marque : Dunod, ISBN : 2100487345

Pour enregistrement de la dll c'est impécable et simple



Oui, j'avais indiqué par erreur qu'il fallait registrer, mais
ça ne s'applique pas dans ce cas bien sur, bête erreur d'inattention
de ma part.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
jean-marc
"jean-marc" a écrit dans le message de
news:4493e352$0$5538$
"marc.dufresne" a écrit dans


le
message de news:4493ceff$0$1339$



> et pourquoi me demandais tu :"Question subsidiaire: as tu Visual
Studio,
> avec Visual C++ installé?" ?

Parce que alors tu pourrais faire toi même tes dll, faire des essais,
etc.
Mais comme tu ne l'as pas, tu peux utiliser ceci qui est gratuit et


tout
simple, et permet de faire la même chose.



OUPS, j'avais oublié le lien!

http://www.pobot.org/Utiliser-MinGW-pour-developper-la.html


--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
1 2 3 4