Avatar billede sprox Nybegynder
15. oktober 2002 - 19:59 Der er 7 kommentarer og
1 løsning

Mysql uden dll

Gudaw

Er det muligt at snakke med en Mysql database uden man skal have den dll liggende ved siden af ?
Avatar billede diz Nybegynder
15. oktober 2002 - 20:41 #1
niks
Avatar billede diz Nybegynder
15. oktober 2002 - 20:43 #2
eller den skal lige et sted hvor windows leder efter den, altså et sted på windows searchpath. Så den kan godt bare ligge i system32 eller lign
Avatar billede sprox Nybegynder
15. oktober 2002 - 22:20 #3
trist :|
er det muligt at implentere den i exe-filen eller lignende ?
Avatar billede diz Nybegynder
15. oktober 2002 - 23:32 #4
Det ved jeg faktisk ikke, men jeg faldt lige over dette :

http://delphi.about.com/library/weekly/aa021301a.htm

der kan man putter andre former for binary data i en resource fil, så måske der er håb.
Avatar billede borrisholt Novice
16. oktober 2002 - 08:22 #5
Jeg kender godt denne guide. Jeg synes den er omstendig ...

Du vil have en DLL fil inkluderet i din Exe fil, og have den slettet igen når programmet lukker :

Jeg formoder din dll fil hedder MySQL.dll !

1)

Lav et script som det her. fx i notepad :

////// begin rc fil //////

//Name              TYPE            Filename
  MySQL              DLLFILE        MySQL.dll
////// end rc fil //////


Gem det med navnet MySQL.rc

Gem det og din dll fil sammen med dit projekt.

2)
  Tilføj MySQL.rc til dit projekt, og vupti så er DLL filen inde i Exe filen !!!!!

3) FormCreate og FormDestroy :
Så skal vi bare have den pakket ud :

function IsDebuggerAttached: boolean; 
// Small function to detect if a debugger
// is Attached to you exe file
// Copyright : Jens Borrrisholt 2002
asm
  mov eax, fs:[$18]
  mov eax, dword ptr [eax + $30]  // Get the TIB's linear address
  mov eax, dword ptr [eax]        // Get the whole DWORD
  and eax, $00010000              // The 3rd byte is the byte we really need to check for the presence of a debugger. (bit 16)
  shr eax, 16                    // Rotate the result so if debugger is found
                  // eax = 1 else eax = 0 (zero)
end;

procedure ExtractFromRes(ResName : String);
begin
  with TResourceStream.Create(HINSTANCE, Resname, 'DLLFILE') do
  try
    Position := 0;
    SaveToFile(ExtractFilePath(Application.ExeName) + ResName + '.dll');
  finally
    free;
  end;
end;

procedure DeleteDLLFile(const DLLFile : String);
begin
  if IsDebuggerAttached then
    exit;
  DeleteFile(ExtractFilePath(Application.ExeName) + DLLFile);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  ExtractFromRes('MySQL');
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
  DeleteDLLFile('MySQL.dll');
end;
 

Såm du ser benytter jeg mig af et par små hjælpe funktioner, bla IsDebuggerAttached: Der er ikke noger mere irriterende, end når man sidder og debugger, og man så heletiden sletter sin dll fil :-)

Jens B
Avatar billede diz Nybegynder
16. oktober 2002 - 13:30 #6
smart :)
Avatar billede sprox Nybegynder
16. oktober 2002 - 14:16 #7
Tak jens, lige hvad jeg manglede :)
Avatar billede morten_s Nybegynder
17. oktober 2002 - 21:10 #8
kigger lige med
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester