Salut les gens du dimanche
ça sent les vacances mais je sèche.
J'ai un BPL qui contient la fonction suivante:
L'appel se fait comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 procedure EnregistreListeTables(Connexion: TADOConnection);stdcall; var Table: string; Tables: TStringList; Str: TStringStream; begin Str := TStringStream.Create; Tables := TStringList.Create; Table := Connexion.ConnectionString; Str.WriteString(Table); Connexion.GetTableNames(Tables, False); for Table in Tables do Str.WriteString(Table + #10#13); Str.SaveToFile('C:\fichiers\ListeTables.txt'); Str.Free; Tables.Free; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 var PackageModule: HModule; Fonction: procedure (Connexion: TADOConnection); begin PackageModule := LoadPackage('Editions.bpl'); if PackageModule <> 0 then begin @Fonction := GetProcAddress(PackageModule, 'EnregistreListeTables'); if @Fonction = nil then ShowMessage('La DLL ne contient pas la fonction "EnregistreListeTables"') else begin ADOConnection1.Connected := True; Fonction(ADOConnection1); ADOConnection1.Connected := False; end; UnloadPackage(PackageModule); end; end;
La fonction est bien appelée mais je ramasse une grosse violation d'accès sur
Comme si l'objet ne passait pas de l'exe au bpl.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Connexion.GetTableNames(Tables, False);
Qu'est-ce que j'ai oublié ?
Papy !
Partager