GetLastName(FullDirectory.s)
Re: GetLastName(FullDirectory.s)
................
Dernière modification par Backup le dim. 22/janv./2012 15:00, modifié 1 fois.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: GetLastName(FullDirectory.s)
Bien sur que ton code marche, mais il n'a rien a voir avec le problème initial
Tu retournes de la DLL le pointeur de la variable DE LA DLL
Alors évidemment que cela fonctionne, puisque c'est la table d'allocation de la DLL qui l'a initialisé
Tu as inversé le problème, cette fois c'est l'EXE qui possède le pointeur de la DLL, alors que dans le problème que j'avais invoqué c’était exactement l'inverse, c'est a dire la DLL qui possédait le pointeur de l'EXE et qui allait modifier "sans le prévenir"
Tu auras donc évidement le même problème, si par malheur tu modifies ce pointeur dans l'EXE sans "prévenir" la DLL
Il me serait facile de planter ton code en refaisant la même manip à l'envers
Avec PB, c'est plus souple, mais je peux te dire que VB, il aime pas qu'on tripote a ses pointeurs, c'est le clash du RAD a chaque fois
Je te raconte pas les centaines de fois que je l'ai relancé
Cherches pas...j'ai travaillé dessus avec des tronches pendant plusieurs semaines.
Tu pourras tortillé du c..tant que tu veux c'est impossible a faire si simplement
Le résultat de mon travail a été, que pour partager des données interprocess, y'a plein de méthodes.
Pipes, mémoire partagée, file mapping, presse papier (pas pour tout), Sendmessage, pour CROCRO le DDE (Dynamic data exchange), etc...
Mais la combine que tu utilises, et que CROCRO utilise dans cette API foireuse de copier le pointeur est extrêmement dangereuse, et doit être utilisée quand on sait exactement ce qu'on fait pour la modification
Comme je te l'ai dit pour la lecture "no problème"
Quand on tiens vraiment a passer les pointeurs d'un process a l'autre, pour modifier sans risques, faut se taper un code de la mort qui transmet les pointeurs avec leur format certes, mais surtout faire une copie de chaque coté faire la modification, et retransmettre les pointeurs pour refaire une copie de l'autre coté
C'est toute la base de mes programmes actuels qui communiquent entre eux en se transmettant les variables continuellement.
Le bonheur avec VB c'est pour transmettre une structure comme je te l'avais déjà dit, car les variables ne sont pas du tout traitées comme en C
J'ai d'ailleurs usé un forum de programmeur C, qui a abandonné au final, en me disant comment a t'il pu faire CROCRO pour faire si compliqué un truc si simple a l'origine
J'ai codé des milliers de lignes de codes, que je foutais a la poubelle..j'avais tellement de versions foireuses, que je savais même plus quelle méthode j'avais ou n'avais pas essayé
J'en ai presque pleuré...personne ne pouvait m'aider....sur les forums VB presque personne ne connaissait assez VB profondément pour pouvoir m'expliquer son comportement interne, et du coté PB pas grand monde connaissait VB
A force de faire chier SROD...il m'a laissé tomber aussi
J'ai même payé une prof soi-disant de VB a l'université de LYON, qui a la vue de ses yeux quand je lui ai expliqué mon problème, avait l'impression d'en avoir jamais fait de sa vie.
J'etait désespéré, mon sauveur a été un CAID modérateur du forum VB-FRANCE qui a eu la gentillesse de bien vouloir me rencontrer personnellement a paris, et qui a lui aussi cherché un certain temps et trouvé que VB fournissait un pointeur de pointeur pour ses safe-array de m....comment tu veux qu'un programmeur C devine ça
et je te parle pas de moi 
Cette histoire de passage de pointeur a vraiment été une douloureuse periode de ma vie de programmeur....
Alors tu peux y aller...a moins que tu me trouve le GRAAL....je trouverais toujours un moyen de te planter ton code, si tu n'utilise pas une des méthode que je viens de citer
Tu devrais etre fier de moi, toi qui me reproche de ne jamais etre sur, pour une fois que je crois avoir compris a peu près quelque chose
Tu retournes de la DLL le pointeur de la variable DE LA DLL
Alors évidemment que cela fonctionne, puisque c'est la table d'allocation de la DLL qui l'a initialisé
Tu as inversé le problème, cette fois c'est l'EXE qui possède le pointeur de la DLL, alors que dans le problème que j'avais invoqué c’était exactement l'inverse, c'est a dire la DLL qui possédait le pointeur de l'EXE et qui allait modifier "sans le prévenir"
Tu auras donc évidement le même problème, si par malheur tu modifies ce pointeur dans l'EXE sans "prévenir" la DLL
Il me serait facile de planter ton code en refaisant la même manip à l'envers
Avec PB, c'est plus souple, mais je peux te dire que VB, il aime pas qu'on tripote a ses pointeurs, c'est le clash du RAD a chaque fois
Je te raconte pas les centaines de fois que je l'ai relancé

Cherches pas...j'ai travaillé dessus avec des tronches pendant plusieurs semaines.
Tu pourras tortillé du c..tant que tu veux c'est impossible a faire si simplement

Le résultat de mon travail a été, que pour partager des données interprocess, y'a plein de méthodes.
Pipes, mémoire partagée, file mapping, presse papier (pas pour tout), Sendmessage, pour CROCRO le DDE (Dynamic data exchange), etc...
Mais la combine que tu utilises, et que CROCRO utilise dans cette API foireuse de copier le pointeur est extrêmement dangereuse, et doit être utilisée quand on sait exactement ce qu'on fait pour la modification
Comme je te l'ai dit pour la lecture "no problème"
Quand on tiens vraiment a passer les pointeurs d'un process a l'autre, pour modifier sans risques, faut se taper un code de la mort qui transmet les pointeurs avec leur format certes, mais surtout faire une copie de chaque coté faire la modification, et retransmettre les pointeurs pour refaire une copie de l'autre coté
C'est toute la base de mes programmes actuels qui communiquent entre eux en se transmettant les variables continuellement.
Le bonheur avec VB c'est pour transmettre une structure comme je te l'avais déjà dit, car les variables ne sont pas du tout traitées comme en C
J'ai d'ailleurs usé un forum de programmeur C, qui a abandonné au final, en me disant comment a t'il pu faire CROCRO pour faire si compliqué un truc si simple a l'origine

J'ai codé des milliers de lignes de codes, que je foutais a la poubelle..j'avais tellement de versions foireuses, que je savais même plus quelle méthode j'avais ou n'avais pas essayé

J'en ai presque pleuré...personne ne pouvait m'aider....sur les forums VB presque personne ne connaissait assez VB profondément pour pouvoir m'expliquer son comportement interne, et du coté PB pas grand monde connaissait VB

A force de faire chier SROD...il m'a laissé tomber aussi

J'ai même payé une prof soi-disant de VB a l'université de LYON, qui a la vue de ses yeux quand je lui ai expliqué mon problème, avait l'impression d'en avoir jamais fait de sa vie.

J'etait désespéré, mon sauveur a été un CAID modérateur du forum VB-FRANCE qui a eu la gentillesse de bien vouloir me rencontrer personnellement a paris, et qui a lui aussi cherché un certain temps et trouvé que VB fournissait un pointeur de pointeur pour ses safe-array de m....comment tu veux qu'un programmeur C devine ça


Cette histoire de passage de pointeur a vraiment été une douloureuse periode de ma vie de programmeur....
Alors tu peux y aller...a moins que tu me trouve le GRAAL....je trouverais toujours un moyen de te planter ton code, si tu n'utilise pas une des méthode que je viens de citer

Tu devrais etre fier de moi, toi qui me reproche de ne jamais etre sur, pour une fois que je crois avoir compris a peu près quelque chose

Re: GetLastName(FullDirectory.s)
ben j'attendsKwai chang caine a écrit :.je trouverais toujours un moyen de te planter ton code, si tu n'utilise pas une des méthode que je viens de citer

je réponds a un problème donné , si tu trouve un bug, donne , je répondrai a ce problème aussi ... j'ai de l'imagination
je te l'ai deja mainte fois expliqué , si tu veux etre peinard , pour transmettre des valeurs difficile a passer,
passe par un fichier , ou par la base de registre (ça sert aussi a ça) ...
meme que ça peut etre plus rapide que le passage de variables directe !!
les disque dur ont évolués, on trouve des SSD , tres tres rapide de nos jours
et meme "avant" l'utilisation des fichiers a toujours existé en informatique
il n'y a pas de problèmes insoluble, il n'y a que des solutions...
apres que celles ci ne te conviennent pas pour x,ou y raisons, c'est une autre histoire ...
c'est surement pourquoi Srod est parti en courant

répondre a un problème donné , et se faire dire qu'on tortille du cul , ou qu'on peut toujours s'accrocher parce que des "tronches"
s'y sont collés avant moi (sous entendant par là que je suis une saucisse) , ça n'encourage pas a te filer un coup de main .

perso , je n'ai jamais coincé longtemps devant un probleme de code !
parceque j'ose des solutions qui ne sont pas forcement "politiquement correcte"
si faut utiliser un bon vieux Goto , ou ecrire un fichier pour ensuite l"effacer... ben je le fait
c'est l'ordinateur qui est a ma botte , pas l'inverse
ps: j'avais la meme soluce en utilisant les prototype aussi

Re: GetLastName(FullDirectory.s)
Bonjour KCC
et merci de poser des pb de ce genre
Pour simplifier le pb de façon à ne pas avoir à recompiler à chaque fois la DLL
J'ai simplifié le cas tout en gardant le pb =>"Accès mémoire invalide ...."
L'erreur de mémoire est bien là
voici une proposition pour régler le pb
On peut utiliser la même méthode pour la première procédure qui ici ne bug pas (1 caractère ajouté alors qu'à la seconde 5000 caractères ajoutés)
@+
et merci de poser des pb de ce genre
Pour simplifier le pb de façon à ne pas avoir à recompiler à chaque fois la DLL
J'ai simplifié le cas tout en gardant le pb =>"Accès mémoire invalide ...."
Code : Tout sélectionner
ProcedureDLL PathAddBackslash(Path)
;Solution By Dobro patented copyrighté Supra Hadopi : o)
; ajoute un "\" si pas present a la fin
mem=Path
path$= ReverseString ( PeekS (mem))
If Mid (Path$,1,1) <> "\"
Path$= "\" +Path$
Path$= ReverseString (Path$)
PokeS(mem,path$)
EndIf
EndProcedure
ProcedureDLL PathAddNoirDeBackslash(Path)
;Solution By Dobro patented copyrighté Supra Hadopi : o)
; ajoute un "\" si pas present a la fin
mem=Path
path$= ReverseString ( PeekS (mem))
If Mid (Path$,1,1) <> "\"
Path$= RSet("", 5000, "\") +Path$
Path$= ReverseString (Path$)
PokeS(mem,path$)
EndIf
EndProcedure
a$ = "c:\Kcc"
PathAddBackslash (@a$)
b$ = "c:\Kcc"
PathAddNoirDeBackslash (@b$)
Debug a$
Debug b$
L'erreur de mémoire est bien là
voici une proposition pour régler le pb
Code : Tout sélectionner
ProcedureDLL PathAddBackslash(Path)
;Solution By Dobro patented copyrighté Supra Hadopi : o)
; ajoute un "\" si pas present a la fin
mem=Path
path$= ReverseString ( PeekS (mem))
If Mid (Path$,1,1) <> "\"
Path$= "\" +Path$
Path$= ReverseString (Path$)
PokeS(mem,path$)
EndIf
EndProcedure
ProcedureDLL.s PathAddNoirDeBackslash(Path)
path$=PeekS(path)
path$= ReverseString (path$)
If Mid (Path$,1,1) <> "\"
; Debug "S0="+path$
Path$= RSet("", 5000, "\") +Path$
; Debug "S1="+path$
Path$= ReverseString (Path$)
ProcedureReturn path$
EndIf
EndProcedure
; If OpenLibrary(0, "DllAjoutNoirDeSlash.dll")
a$ = "c:\Kcc"
; CallFunction(0, "PathAddBackslash", @a$)
; Debug a$
; b$ = "c:\Kcc"
; CallFunction(0, "PathAddNoirDeBackslash", @b$)
; Debug b$
; CloseLibrary(0)
; EndIf
PathAddBackslash (@a$)
b$ = "c:\Kcc"
b$=PathAddNoirDeBackslash (@b$)
Debug a$
Debug b$
@+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Re: GetLastName(FullDirectory.s)
@PAPIPP
tu pourrai au moins prendre le dernier code que j'ai posté
si j'utilise une Dll physiquement indépendante ;
c'est que Kcc l'a expressément demandé !!
donc ça :
c'est pas possible !
tu ne peut pas lire un string venant d'un dll sans passer par peeks()
mon dernier code fonctionne parfaitement
tu pourrai au moins prendre le dernier code que j'ai posté

si j'utilise une Dll physiquement indépendante ;
c'est que Kcc l'a expressément demandé !!

donc ça :
Code : Tout sélectionner
b$=PathAddNoirDeBackslash (@b$)
tu ne peut pas lire un string venant d'un dll sans passer par peeks()
mon dernier code fonctionne parfaitement
Re: GetLastName(FullDirectory.s)
@DOBRO
J'étais en cours d'édition et je n'ai pas vu la correction qui est identique.
@+
J'étais en cours d'édition et je n'ai pas vu la correction qui est identique.
@+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Re: GetLastName(FullDirectory.s)
certes 
mais le code que tu reprends date d'hier !
mon dernier code a été posté aujourd'hui a 14:42


mais le code que tu reprends date d'hier !

mon dernier code a été posté aujourd'hui a 14:42


Re: GetLastName(FullDirectory.s)
@DOBRO
Je suis un peu lent ou un peu miro ce doit être l’âge.
@+
Je suis un peu lent ou un peu miro ce doit être l’âge.
@+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: GetLastName(FullDirectory.s)
Oui c'est vrai c’était ta proposition quand je cherchais une solution a ce passage de pointeursje te l'ai deja mainte fois expliqué , si tu veux etre peinard , pour transmettre des valeurs difficile a passer,
passe par un fichier , ou par la base de registre (ça sert aussi a ça) ...
même que ça peut etre plus rapide que le passage de variables directe !!
les disque dur ont évolués, on trouve des SSD , tres tres rapide de nos jours

Non il est parti parce que il en avait marre de m'expliquer ce que je me tue a t'expliquer aussi.c'est surement pourquoi Srod est parti en courant![]()
Comme quoi c'est peut être français le mot "bourrin"

Ta méthode de fichier est tout aussi valable, je ne critique pas...mais c'est pas ce qui t'ai demandé

Mais quand on te pose un problème, et qu'on insiste sur le fait qu'on veut passer des pointeurs..
Plusieurs soluces...
C'est impossible
.... Et la tu lui explique les autres solutions
C'est possible, mais très dur :
.....Soit tu sait faire, comme SROD et certains autres et tu essaie d'expliquer à un bourrin une des choses les plus compliqué dans la programmation
Et un mois plus tard qu'il fait comme tu as fait, copie mal les pointeurs, etc...tu abandonnes....
.....Soit tu sait faire, comme SROD et certains autres et tu répond pas
.....Soit tu sais pas faire et encore plusieurs soluces
1/ Tu ne répond pas
2/ Tu dis au mec qui demande que tu ne sais pas faire, et que t'aurais bien aimé l'aider

3/ Tu dis au mec qui demande que sa demande est pas bonne et tu essayes de le forcer à faire ce qu'il t'as pas demandé

Quitte à essayer de le convaincre voir même de le faire passer pour un ringard ou je ne sais pas quoi d'autre

Non juste sous entendu, que chacun a son domaine, maintenant si tu crois pouvoir t'accrocher avec des mecs comme SROD, NETMAESTRO, TSSOFT, FLYPE, GNOZAL, etc.... et ben c'est que ton ego n'a pas changé depuis ton départrépondre a un problème donné , et se faire dire qu'on tortille du cul , ou qu'on peut toujours s'accrocher parce que des "tronches"
s'y sont collés avant moi (sous entendant par là que je suis une saucisse) , ça n'encourage pas a te filer un coup de main .

Ce sont des personnes qui maitrisent windows sur le bout des doigts, c'est leur domaine comme la musique est le tiens.
Je sais que tu aimerais qu'ils viennent t'expliquer ce qu'est une guitare..
Tu maitrise peut etre le graphisme et la tu pourrais peut être leur en apprendre, mais pour ce qui est la prog Windows..j'en doute..mais bon j'me trompe peut etre, hein...dans ce cas excuse moi

J'ai même une idée j'ai plein de question que personne n'a pu répondre sur le US, tu va pouvoir m'aider

C'est tout...pas la peine de monter sur tes grands "cheval"
Alors la on est d'accord.....chacun ses methodes, je ne critique pas les tiennes, mais ce ne sont pas les miennesperso , je n'ai jamais coincé longtemps devant un probleme de code !
parceque j'ose des solutions qui ne sont pas forcement "politiquement correcte"
On a pendant des années echangé sur ce sujet et comme toi tu n'as pas changé..moi non plus
Moi j'adore la perfection, je peux passer un mois sur une ligne, sans essayer de contourner le problème
La seule chose qui me fait lacher c'est quand quelqu'un qui maitrise me dit que c'est pas possible.
Mais si on me dit que c'est tres dur, pas a ma portée....je dort plus pendant des semaines.
Et ceci dans la vie c'est pareil, le nombre de choses que j'ai réussies, alors que les pros m'ont dit que je n'y arriverais pas....

C'est un comportement ridicule qui me pourri ma vie, mais on est comme on est..on se refait pas ..n'est ce pas DOBRO

J'ai un collègue au boulot, qui est comme toi, il cherche toujours la soluce la plus simple...pas la plus adaptée...la plus simple...
Et pour moi si c'est pas adapté...c'est pas la bonne

Je ne fait comme toi que quand a force de me battre...je n'y suis pas arrivé, ça arrive aussi..et j'abandonne la mort dans l'ame
J'suis pas une machine non plus

On s'est prouvé maintes fois qu'on etait les deux extrêmes ...donc on sera jamais d'accord
Quoi qu'il en soit je te remercie sincèrement d'essayer de m'aider avec tes moyens comme on le fait tous
Mais aider, c'est proposer...et ne pas essayer de changer la donne

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: GetLastName(FullDirectory.s)
J'aimerais bien continuer à jouer, mais faudrait que tu changes pas les données du problème, comme je te l'ai dit au dessusben j'attends(que de la gueule)
Code : Tout sélectionner
a$=PathAddNoirDeBackslash(a$)
Avec ton code, tu ne corrige pas le problème, comme tu dis, tu donnes une autre solution, comme il y en a plein d'autres comme je te l'ai aussi ecrit
Moi ce que je te demande, si c'est possible, bien sur
C'est j'envoie une variable, un tableau, une structure dans une DLL.
Cette DLL modifie cette variable, tableau, structure pour la rallonger, rétrécir, modifier etc...pour que l'EXE l'utilise avec les nouvelles données
A son tour l'EXE travaille avec et la modifie pour la rallonger, rétrécir, modifier etc...
Voila l'exposé du problème..et ben ça, a faire...c'est apparemment très loin d’être facile
C'est pour ça que quand j'avais demandé à l’époque tu m'avais dit que je me cassais la tête et d'utiliser des fichiers

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: GetLastName(FullDirectory.s)
@PAPIPP
Merci beaucoup de ton aide
Si tu as une solution avec cette histoire de passage de pointeurs.
En fait, moi j'ai trouvé la solution de créer de chaque coté un tableau, une variable, etc... la modifier et repasser le pointeur de l'autre coté qui le copie aussi etc..
Cela fait beaucoup de code pour ce passage.
C'est un vieux sujet, pour l'instant ça tourne comme ça, moi j’étais juste intervenu sur l'histoire de crosoft qui se permettait de modifier la variable d'un autre process sans le prévenir et je disais que c’était un peu gros
Remonte un peu et tu auras toutes l'histoire
La dessus on est reparti sur cette vieil histoire avec DOBRO
Merci beaucoup de ton aide
Si tu as une solution avec cette histoire de passage de pointeurs.
En fait, moi j'ai trouvé la solution de créer de chaque coté un tableau, une variable, etc... la modifier et repasser le pointeur de l'autre coté qui le copie aussi etc..
Cela fait beaucoup de code pour ce passage.
C'est un vieux sujet, pour l'instant ça tourne comme ça, moi j’étais juste intervenu sur l'histoire de crosoft qui se permettait de modifier la variable d'un autre process sans le prévenir et je disais que c’était un peu gros

Remonte un peu et tu auras toutes l'histoire
La dessus on est reparti sur cette vieil histoire avec DOBRO

Re: GetLastName(FullDirectory.s)
je crois qu'au fond ... le fond du probleme c'est que tu cherche a faire faire a une DLL un truc qui n'est pas normal !
pour moi , (mais je me goure peut etre)
une dll est un Agglomérat de fonctions (une librairie en quelque sorte)
un prg fait appel a une DLL qui renvoie un résultat !
toi ce que tu veux si j'ai bien compris , c'est que ta Dll modifie des variables dont se sert le Prg appelant !
ben faut pas utiliser une Dll pour ça !
faut utiliser un Prg !!
il existe plusieurs façon de faire communiquer des prg entre eux
Mon Editeur EPB par exemple , peut etre commandé par un prg
(insertion de text, saut de curseur etc ...)
comme tu nous ne dis surement pas tout , je ne comprends pas ce que tu veux obtenir de tes pauvres DLL
une DLL est faite pour retourner un résultat (comme dans l'exemple que j'ai donné)
ou pour agir en Void()
mais pas pour transmettre un pointeur sur un des tableaux ou structure ou variable de la dll
ça n'as pas de sens ..
je pense que (comme d'habitude) tu veux détourner le role d'une Dll
par contre rien ne t'interdit de faire un prg qui lui va pouvoir communiquer avec un prg appelant !
(c'est le principe des Cheats... ) ou de mon EPB
et ce prg pourra contenir des procedures que tu exploiterai ...
pour moi , (mais je me goure peut etre)
une dll est un Agglomérat de fonctions (une librairie en quelque sorte)
un prg fait appel a une DLL qui renvoie un résultat !
toi ce que tu veux si j'ai bien compris , c'est que ta Dll modifie des variables dont se sert le Prg appelant !
ben faut pas utiliser une Dll pour ça !
faut utiliser un Prg !!

il existe plusieurs façon de faire communiquer des prg entre eux
Mon Editeur EPB par exemple , peut etre commandé par un prg
(insertion de text, saut de curseur etc ...)
comme tu nous ne dis surement pas tout , je ne comprends pas ce que tu veux obtenir de tes pauvres DLL
une DLL est faite pour retourner un résultat (comme dans l'exemple que j'ai donné)
ou pour agir en Void()
mais pas pour transmettre un pointeur sur un des tableaux ou structure ou variable de la dll
ça n'as pas de sens ..
je pense que (comme d'habitude) tu veux détourner le role d'une Dll
par contre rien ne t'interdit de faire un prg qui lui va pouvoir communiquer avec un prg appelant !
(c'est le principe des Cheats... ) ou de mon EPB

et ce prg pourra contenir des procedures que tu exploiterai ...
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: GetLastName(FullDirectory.s)
C'est possible ce que tu dis, pas sur, mais possible 
Je pourrais pas t'affirmer que ce que je lui fait faire soit vraiment le comportement le plus commun
En fin de compte j'en sais rien, j'suis pas assez calé la dedans pour le dire
Peut être si quelqu'un qui s'y connait noir la dedans pourrait nous éclairer...
La question étant, pour pas qui se tape toute la discussion
Est il normal d'utiliser une DLL pour modifier la variable d'un EXE ????
Peut être que des programmes le font, j'en sais rien
En plus, je te l'ai déjà dit, j'ai pas de mémoire, ce combat avec ces pointeur est un vieux combat.
Et je me rappelle même plus tous les tenants et aboutissants de mon problème de l’époque
Juste je me rappelle, qu'il était nécessaire pour moi d'essayer de le faire
Etant donné que les CAIDS, ne m'ont pas dit que c’était impossible...j'ai bossé
Seulement possible pour eux c'est deux mois de travail pour moi
En fin de compte je voulais être le plus prés possible du bas niveau, j'avais peur des modifications dues aux chgt d'OS
C'est vrais les filemapping etc ce sont des API...et les API ont sait tous les deux qu'elles changent d'un OS a l'autre
Je m’était donc dit que la seule chose qui ne change pas c'est la gestion de la mémoire et des pointeurs
En plus j'avais 2 impératifs, les PC sur lesquels j'installe sont bridé comme des japonais.
On peut parfois même pas créer un fichier sans avoir l'UAC ou NORTON au cul
Donc pour ta combine de fichier, je me méfiais, au moins le passage directe en mémoire...c'est invisible pour eux
En plus les DLL partageant le même espace mémoire que son EXE appelant, ça reste dans la famille, donc personne ne peut intervenir
Et comme ce code est le cœur de toutes mes applications, et est utilisé toutes les 10 secondes, il me fallait un truc béton, interne.
Voila pourquoi j'ai insisté, maintenant de la a dire que c'est un comportement normal....seul FRED et ceux qui ont son niveau pourrait nous le dire
Enfin il n'en reste pas moins..pour revenir a nos moutons..qu'il abuse CROCRO avec son API gratte pointeur

Remarque..j'y pense la réponse est un peu dans la question comme dirait coluche non ??
Si BILOU il l'a fait, comme sony, c'est bien lui le créateurs des DLL non ??? c'est donc surement que c'est utilisé quelques fois ...
Car cette API elle est bien dans une DLL

Je pourrais pas t'affirmer que ce que je lui fait faire soit vraiment le comportement le plus commun
En fin de compte j'en sais rien, j'suis pas assez calé la dedans pour le dire
Peut être si quelqu'un qui s'y connait noir la dedans pourrait nous éclairer...
La question étant, pour pas qui se tape toute la discussion

Est il normal d'utiliser une DLL pour modifier la variable d'un EXE ????

Peut être que des programmes le font, j'en sais rien
En plus, je te l'ai déjà dit, j'ai pas de mémoire, ce combat avec ces pointeur est un vieux combat.
Et je me rappelle même plus tous les tenants et aboutissants de mon problème de l’époque

Juste je me rappelle, qu'il était nécessaire pour moi d'essayer de le faire
Etant donné que les CAIDS, ne m'ont pas dit que c’était impossible...j'ai bossé

Seulement possible pour eux c'est deux mois de travail pour moi

En fin de compte je voulais être le plus prés possible du bas niveau, j'avais peur des modifications dues aux chgt d'OS
C'est vrais les filemapping etc ce sont des API...et les API ont sait tous les deux qu'elles changent d'un OS a l'autre
Je m’était donc dit que la seule chose qui ne change pas c'est la gestion de la mémoire et des pointeurs
En plus j'avais 2 impératifs, les PC sur lesquels j'installe sont bridé comme des japonais.
On peut parfois même pas créer un fichier sans avoir l'UAC ou NORTON au cul

Donc pour ta combine de fichier, je me méfiais, au moins le passage directe en mémoire...c'est invisible pour eux
En plus les DLL partageant le même espace mémoire que son EXE appelant, ça reste dans la famille, donc personne ne peut intervenir

Et comme ce code est le cœur de toutes mes applications, et est utilisé toutes les 10 secondes, il me fallait un truc béton, interne.
Voila pourquoi j'ai insisté, maintenant de la a dire que c'est un comportement normal....seul FRED et ceux qui ont son niveau pourrait nous le dire

Enfin il n'en reste pas moins..pour revenir a nos moutons..qu'il abuse CROCRO avec son API gratte pointeur


Remarque..j'y pense la réponse est un peu dans la question comme dirait coluche non ??
Si BILOU il l'a fait, comme sony, c'est bien lui le créateurs des DLL non ??? c'est donc surement que c'est utilisé quelques fois ...
Car cette API elle est bien dans une DLL

Re: GetLastName(FullDirectory.s)
certes , mais il semble qu'elle soit buggéKwai chang caine a écrit : Si BILOU il l'a fait, comme sony, c'est bien lui le créateurs des DLL non ??? c'est donc surement que c'est utilisé quelques fois ...
Car cette API elle est bien dans une DLL
pas normale qu'un API creer un débordement....

de plus dans l'absolu la fonction modifie une variable (chaine) qu'on lui donne..
elle ne vas pas chercher a poker une variable du prg appelant

voici ce que j'utilise pour EPB
pour que EPB puisse recevoir des ordres d'un prg extérieur , (donc modification possible de variable de EPB )
on utilise un fichier_memoire !! ..mais prévu par microsoft en personne !!! étonnant non ?
les Mailslots ! (attention ne pas confondre avec "Email")
il s'agit d'un échange par fichier RAM !!
seule limitation on ne peut transmettre plus de 64ko !!(a Vérifier cependant depuis XP ça a peut etre changé)
; c'est déja énorme pour des variables d'un prg !
surtout qu'on peut creer autant de mailSlot qu'on veux , il suffit de lui donner un nom différent !
le prg qui reçoit l'info , pour moi c'est EBP , mais tu peux incorporer la procedure dans n'importe quel prg
le prg de réception doit etre lancé , AINSI que l'un des 2 prg d’émission pour voir le résultat
PRG de RECEPTION
Code : Tout sélectionner
............................
et la routine qui permet de poster une info dans le prg :
PRG d'émission
Code : Tout sélectionner
.......................
avec ces 2 routines , je ne vois pas ce qui peut empecher un prg de communiquer avec un autre ...
tu peux considérer une Dll comme etant une partie d'un prg
mais tu peux aussi considérer un prg comme etant une partie Annexe d'un prg2
rien n’empêche a un prg de lancer le deuxième prg
en clair le recepteur lance l'emetteur ...
et meme qu'il doit etre possible de faire 2 prg qui soit emetteur ET recepteur ....
l'un des deux pouvant de plus etre invisible en tache de fond ..
te servant en quelque sorte de "DLL" comme tu voulais le faire

tu vois meme CROCRO se sert de fichiers (Ram_file) pour la transmission interProcess !

bon là l'exemple ets pour la communication de 2 process sur la meme machine ... mais là ou c'est fort
c'est qu'on peut communiquer 2 prg situé sur 2 machines distantes par reseau !! (voir doc PDF ci_la haut)
Dernière modification par Backup le dim. 22/janv./2012 15:02, modifié 2 fois.
Re: GetLastName(FullDirectory.s)
@KCC
Voici encore une solution si on connait à priori la longueur que la DLL peut ajouter
@+
Voici encore une solution si on connait à priori la longueur que la DLL peut ajouter
Code : Tout sélectionner
ProcedureDLL PathAddBackslash(Path)
mem=Path
path$=ReverseString(PeekS(mem))
If Mid(Path$,1,1)<>"\"
Path$="\"+Path$
Path$=ReverseString(Path$)
PokeS(mem,path$)
EndIf
EndProcedure
ProcedureDLL PathAddNoirDeBackslash(Path)
mem=Path
path$=ReverseString(PeekS(mem))
If Mid(Path$,1,1)<>"\"
Path$=RSet("",5000,"\")+Path$
Path$=ReverseString(Path$)
PokeS(mem,path$)
EndIf
EndProcedure
a$="c:\Kcc"
PathAddBackslash(@a$)
b$=Space(6000) ; Reserve 6OOO octets
b$="c:\Kcc"
PathAddNoirDeBackslash(@b$)
Debug a$
Debug b$
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.