Kernel32 funktion

Tags:    delphi

Når jeg prøver at kalde en funktion i Kernel32.dll så kommer der bare en fejl! Hvad gør jeg galt?

Fold kodeboks ind/udKode 


Programmet bliver kompileret korrekt, men når jeg trykker på min knap, så kommer der en fejl med:
Prpject Project1.exe raised execption class EAccessViolation with message 'Access violation at address 003B0011. Read of address 00000000'. Process stopped. Use Step or Run to continue.



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Har du xp? mener ikke man kan bruger Kernel32 deri...
Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------



Når jeg prøver at kalde en funktion i Kernel32.dll så kommer der bare en fejl! Hvad gør jeg galt?

Fold kodeboks ind/udKode 


Programmet bliver kompileret korrekt, men når jeg trykker på min knap, så kommer der en fejl med:
Prpject Project1.exe raised execption class EAccessViolation with message 'Access violation at address 003B0011. Read of address 00000000'. Process stopped. Use Step or Run to continue.

Hej,

Du får en fejl da den måde du har defineret GetSystemTime på IKKE er korrekt.
For det første er det ikke en funktion men en procedure og for det andet så er der ingen funktioner/procedure i windows dll'erne som bruger string variabler men der i mod bruges der PChar. Den tager der i mod en reference til en SYSTEMTIME struktur.

SYSTEMTIME burde være defineret i windows unit'en men eller skulle den gerne se således ud:
Fold kodeboks ind/udKode 


Du skal dog huske selv at konvertere de forskellige værdier i TSYSTEMTIME til en streng hvis den skal bruges i dit eks. oven for.

/Michael.



Har du xp? mener ikke man kan bruger Kernel32 deri...
Mvh.
Rune Jensen
---------------------------------------------------------------------------
##The one who laugh last is the one who think slowest!##
---------------------------------------------------------------------------


Ja, jeg har Windows XP Pro SP1



Jeg skal ikke bruge SystemTime! Jeg vil bare have at vide hvordan jeg kalder funktioner i KERNEL32.DLL!!!!!!



Jeg skal ikke bruge SystemTime! Jeg vil bare have at vide hvordan jeg kalder funktioner i KERNEL32.DLL!!!!!!

Hej,

Som jeg skrev før så er dit problem at du har defineret proceduren forkert hvilket resultere i en runtime error.
Hvorfor du først får denne fejl under afvikling af programmet er at delphi først prøver at loade DLL'et når proceduren bliver kaldt. Når den så ikke kan finde proceduren så smider den en exception.

Så det er ganske enkelt, sørg for at dine funktioner/procedure er erklæret korrerkt.

Hvis den funktion/procedure ikke hedder det samme i DLL'et som det du har defineret i din kode så kan du bruge keyword'et name til at angive det navn som funktionen/proceduren har i DLL'et:
Fold kodeboks ind/udKode 


/Michael.



t