begin process at 2010 02 09 20:51:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

Acess violation At Adress in module


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Acess violation At Adress in module

samedi 18 août 2007 à 20:31:34 | Acess violation At Adress in module

Paounet

Apres creation de mon composant TGetPassword qui fonctionne.. j'ai créé une feuille principale Form1 (Unit1) qui utilise la 2ème feuille Modale Form2 avec Unit2 qui contient le composant..
La fonction Test(x,y,z)  du Composant fonctionne bien à l'interieur de la feuille modale Form2 ou il est installé, mais non a partir de la feuille principale Form1 en m'affichant le message:
« Acess violation At Address  0046B5D1 in Module 'Programme.exe'
(mon programme compilé). Read of Addres 00000364...
Quelqu'un peut-il m'aiguiller pour trouver l'Erreur.. et les codes..D'avance Merci
Unit 1                                                            Unit 2
Form 1                                                           Form2
...
Uses Unit2;                                                     Uses Unit1;
.                                 
.                                                                     ModalResult:=mrOk;
Procedure...
 If (Form2.Test(MDP,Login,Codes) Then --- Message Erreur.
Paounet
dimanche 19 août 2007 à 14:34:26 | Re : Acess violation At Adress in module

Guillemouze

Procedure...
if not Assigned(Form2) then ShowMessage('form2=nil');
 If (Form2.Test(MDP,Login,Codes) Then --- Message Erreur
dimanche 19 août 2007 à 16:13:03 | Re : Acess violation At Adress in module

Paounet

Merci pour la réponse .....
Mais elle ne répond pas à mon problème.. Tout se passe comme si ma fonction Test(....) de mon composant n'est pas accesible depuis une feuille autre que celle ou se trouve le composant..
Le code ' if not Assigned(Form2) then ShowMessage('form2=nil');' me renvoit le message 'form2=nil' et mon code du test(...) le même message Access Vialotion...
Bien que que feuille1 a l'unité de feuille2 c'est comme si mon compo est invisible..

Paounet
dimanche 19 août 2007 à 23:06:43 | Re : Acess violation At Adress in module

Guillemouze

heuuuu je crois que tu n'as pas bien compris ce que je voulais dire !!!
ta variable Form2 n'est pas affectée .
donc plusieurs possibilités:
    - ta form n'est pas créée automatiquement (tu dois avoir un createforl(Form2, TForm2) dans la source de ton dpr
    - tu as une autre variable qui s'appele form2 qui n'est pas intialisée
    - la fonction test est appelée dans le Create ou le OnCreate de ta Form1
    - ...
lundi 20 août 2007 à 04:05:28 | Re : Acess violation At Adress in module

Paounet

Je te remercie sincérement de ta sollicitude Guillemouze ..
Ma forme2 se trouve bien dans le Dpr.
la fonction Test est demandée sur le OnShow de Form1.
En fait je te passe les codes:
------------------------------DPR --------------------
program Protection;
uses
  Forms,
  Demo in 'Demo.pas' {FormDemo},       Feuille Prinicpale -> Form1
  Saisie in 'Saisie.pas' {FormSaisie},         Feuille Modale    -> Form2
  ProtectF in 'ProtectF.pas' {FormF},                 "
  ProtectR in 'ProtectR.pas' {FormR};                "
{$R *.res}
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title := 'Protection des Logiciels';
  Application.CreateForm(TFormDemo, FormDemo);          ->   Form1
  Application.CreateForm(TFormSaisie, FormSaisie);           ->   Form2
  Application.CreateForm(TFormF, FormF);
  Application.CreateForm(TFormR, FormR);
  Application.Run;
end.
--------------------------Feuille Principale  Form1= FormDemo ---------
Unit Demo
.........
Uses ProtectF,ProtectR,Saisie;         Saisie est l'unité ou se trouve le Compo.
{$R *.dfm}
// Test d'existence du fichier Licence.dat et prise des Codes
procedure TFormDemo.FormShow(Sender:TObject);
Const Fichier='Licence.dat';
Var F:TextFile;Code:String;Res:Array[0..2] Of String;i,j:Integer;
begin
  Flag:=False;For i:=0 to 2 Do Res[i]:='';
  If FileExists(Fichier)=False Then Exit Else
    Begin AssignFile(F,Fichier);Reset(F);Read(F,Code);CloseFile(F);
    Code:=Crypte(Code);End;i:=0;For j:=1 to Length(Code) Do
      If Code[j]<>#13 then Res[i]:=Res[i]+Code[j] Else Inc(i);
  // Execute le Test par rapport au composant TGetPassword des Codes
  // Exemple '3452CB6A','DELPHI','4381B685A8075C3452CB'
  If FormSaisie.GetPW.Test(Res[0],Res[1],Res[2]) Then Begin
    Enregistre.visible:=False;Version.Caption:='Version Complète';
    End Else Flag:=False;
end;
-------------------- Feuille Modale Form2 = FormSaisie --------
Unit Saisie;
interface
uses Forms,GetPassword,StdCtrls,Buttons,Classes,Controls,ExtCtrls,
     Dialogs;
type
  TFormSaisie = class(TForm)
    Retour:TBitBtn;
    GetPW:TGetPassword;
    procedure RetourClick(Sender:TObject);
  end;
var FormSaisie:TFormSaisie;Flag:Boolean;
implementation
Uses Demo;
{$R *.dfm}
procedure TFormSaisie.RetourClick(Sender:TObject);
Const Mess='Valide';Var Mess1:String;
begin
  If GetPW.Test('3452CB6A','DELPHI','4381B685A8075C3452CB') then
    Mess1:='' Else Mess1:='Non ';
  ShowMessage(Mess1+Mess+#13);     ( Par contre ici ça marche)
  ModalResult:=mrOk;
end;
end.
-------------------------------------------------------------------------------
A tout hasard c'est le compo TGetPassword qui crée automatiquement en partie la feuille 2 - FormSaisie ( Attributs - rien d'autre)...
Paounet
lundi 20 août 2007 à 13:36:43 | Re : Acess violation At Adress in module

Guillemouze

pas facile de debugger comme ca ...
je te conseille de faire du pas a pas et d'evaluer tes variables la ou ca plante.
tu peux aussi mettre un point d'arret dans le OnCreate de ta formeSaisie et un sur ta ligne qui pose probleme pour voir l'ordre d'appel (le create doit etre appelé avant la ligne en question)
lundi 20 août 2007 à 17:09:23 | Re : Acess violation At Adress in module

Paounet

Effectivement... J'ai contourné la difficulté en copiant de mon compo TGetPassword la fonction publique Test(etc...):Boolean; je l'ai intégrée dans ma 2ème feuille modale Formsaisie. En l'appelant de ma feuille princiaple tout fonctionne.. Bizarre, pourtant elle était déclarée comme publique. C'est dommage car je la retrouve 2 fois désormais.. Ca vient du compo c'ezst sûr mais je ne vois pas...

A tout hasard....
  TGetPassword = class(TPanel)
      .  
      .
      .
    Function Test(MDP,Login,Codes:String):Boolean;
   .
   .
// Fonction qui teste les valeurs saisies avec l'algorithme de calcul
Function TGetPassword.Test(MDP,Login,Codes:String):Boolean;
Var Chaine:String;i,Valeur,Nbre,Nb:Integer;
Begin
  Valeur:=0;
  // On récupère le Nombre Nb de Passe.Text:=MotPasse(IntToHex(Nbre,1))
  Nbre:=Round(Hexa(MDP));
  // Calcul de la Somme Ascii du Nom = Valeur
  For i:=1 To Length(Login) Do Inc(Valeur,Ord(Login[i]));
  // Calcul du Nombre générateur de Random Nb:=Valeur*Nbre
  Nb:=Valeur*Nbre;
  // Calcul du Code Activation Valide
  Chaine:=Copy(IntToStr(Valeur)+IntToHex(Valeur,1)+
    IntToHex(Nb,1)+IntToHex(Nbre,1),1,20);
  If Chaine=Codes then Test:=True Else Test:=False;
End;
Paounet
lundi 20 août 2007 à 21:12:08 | Re : Acess violation At Adress in module

Guillemouze

Réponse acceptée !
non je pense pas que ca vienne de ton composant avec ce que tu nous met.
par contre ce qui m'etonne c'est que ton compo herite de TPanel! je suppose qu'il contient les edits de saisie des valeurs.
enfin, si je comprend bien ce que tu as fait, j'aurait fait un truc dans ce genre (c'est peut etre deja ce que tu as fait):

TGetPassword = class(TPanel)
private
    edtMDP: TEdit;
    edtLogin: TEdit;
    edtCodes: TEdit;
    ...
public
    property MDP: string read GetMDP write SetMDP;
    property Login: string read GetLogin write SetLogin;
    property Codes: string read GetCodes write SetCodes;
    ...
    function Test: Boolean;
end;

...

function TGetPassword.GetMDP: string;
begin
    Result := edtMDP.Text;
end;


procedure TGetPassword.SetMDP(const Value: string);
begin
    edtMDP.Text := Value;
end;


//Idem pour Login et Codes

function TGetPassword.Test: Boolean;
begin
    //Ton code en utilisant les properties
end;

mardi 21 août 2007 à 02:58:11 | Re : Acess violation At Adress in module

Paounet

Effectivement ca y ressemble...  mon compo est de type TPanel et comprend pas  mal d'objets... Merci tout de même... Au debut je pensais que mon compo lorsqu'il était déposé sur une feuille, et qu'il la reformatait, celle-ci pouvait poser problème.. Mais avec ton aimable concours j'ai compris que lorsque la feuille 2 était lancée le compo devient après sa création accessible.. mais dès lors j'appelais la fonction du compo depuis la feuille 1, sa création n'étant pas faite....> ERREUR.. Je pense que c'est cela..

Dis moi à tout hasard.. lorsque je crée la feuille qui reçoit mon compo comment faire pour ajouter à ladite feuille (Form1) de nouvelles propriétés, voire fonction si tu sais Merci...

Je faisais ceci pour c=recréer ma feuille
------------------------------------------
Constructor TGetPassword.Create(Owner:TComponent);
Begin
  Inherited Create(Owner);
  If Owner is TForm then with TForm(Owner) Do Begin
    Begin { Mes propriétés celles visibles normalement }End;
    Mes Objets... etc..                              MERCI.
Paounet


Cette discussion est classée dans : feuille, form2, at, violation, acess


Répondre à ce message

Sujets en rapport avec ce message

Access violation At Address In module *.exe [ par Paounet ] Apres creation de mon composant TGetPassword qui fonctionne.. j'ai créé une feuille principale Form1 (Unit1) qui utilise la 2ème feuille Modale Form2 Probleme de Violation d'accès [ par Mr7Bungle ] Bonjour et merci de bien vouloir preter attention à mon petit soucis =)Voila, j'ai créer un programme utilisant plusieurs fenetres différentes deja cr access violation at 0x775b5581: write of address 0x00030fe4'. Processus stoppé [ par solitair ] bonjour J’ai un Problème ,ya t’il une personne qui peut m'aider J’utilise Delphi 2007 & Windows 7 ,au bout du 4 em click sur un bouton (exécute une suppression d'une feuille de calcul! [ par othland ] en créant un document excel avec la technique OLE, je manipule un document qui contient 3 feuilles de calcul.or moi, je n'en ai besoin que de 2 feuill Erreur Absraite [ par OhAime ] Bonjour!Alors voilà, une chose étonnante se passe! Je fait un petit programme qui necessite a un moment la création de composants dynamique. Jusque là Impression Excel via Delphi [ par wisdeco81 ] Bonjour,   Je voudrais lancer l'impression d'une feuille excel directement depuis Delphi.  Tout ce que j'ai réussi a faire pour l'instant c'est import OLE2 et Excel [ par sylvunix ] Bonjour à tous,J'essaie de charger dans un TOleContainer un feuille Excel lue depuis un fichier, de modifier cette feuille, de la sauvegarder puis de BDD : violation de clé [ par solitaire7z ] slt, voila je ss débutant ds le domaine de la programmation , g crier une base de donnée et en mement de la sasie de code "BDE paradox  indaxé par se Code pour Composant composite [ par Paounet ] Je ne sais si cela est possible car cela fait un moment que je cherche et ce sans résultat positif.Quel code écrire dans mon composant composite type


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales