Delphi --> Lazarus (Fehler)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Delphi --> Lazarus (Fehler)

Beitrag von MitjaStachowiak »

Hallo,
bin auf der Suche nach einer Alternative zu Delphi, seit es das '2005er nicht mehr gibt. Lazarus sieht bisher ganz gut aus, jedoch erhalte ich beim Transfer meiner bisherigen Projekte Fehler. Folgenden kann ich einfach nicht lösen:

Code: Alles auswählen

uses Windows;
 
(...)
 
procedure OnFastTimer;
begin
...
end;
 
(...)
 
SetTimer(0,0,40,@OnFastTimer);   // Hier kommt der Fehler


Bei SetTimer erhalte ich den Fehler FastTimers.pas(45,54) Error: Incompatible type for arg no. 4: Got "<address of procedure;Register>", expected "<procedure variable type of procedure(LongWord, LongWord, LongWord, LongWord);StdCall>". In Delphi hat das immer funktioniert.

Genau diesen Fehler erhalte ich bei zahllosen Aufrufen. Ich hab' schon viel versucht aber nur statt dem @OnFastTimer nil einsetzen hat funktioniert, aber das ist jetzt nicht wirklich die Lösung -.-
Wer kann da helfen?

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Delphi --> Lazarus (Fehler)

Beitrag von theo »

Die Funktion ist in Windows so definiert:

Code: Alles auswählen

VOID CALLBACK TimerProc(
  __in  HWND hwnd,
  __in  UINT uMsg,
  __in  UINT_PTR idEvent,
  __in  DWORD dwTime
);


Also nicht parameterlos dafür aber mit StdCall.

Code: Alles auswählen

TIMERPROC = procedure (_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD);stdcall;

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Delphi --> Lazarus (Fehler)

Beitrag von MitjaStachowiak »

Tatsächlich. Wenn ich schreibe

Code: Alles auswählen

procedure OnFastTimer(_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD);
 stdcall;
begin
 (...)
end;

geht es. Jetzt bin ich dabei, alle anderen Fehler "auszubügeln"...
Hat zufällig schon jemand die Header für DirectX durch? Oder geht das in Lazarus grundsätzlich nicht?

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Delphi --> Lazarus (Fehler)

Beitrag von theo »

MitjaStachowiak hat geschrieben:Hat zufällig schon jemand die Header für DirectX durch? Oder geht das in Lazarus grundsätzlich nicht?


Bin keine Experte dafür, aber es gibt z.B. das: http://andorra.sourceforge.net/

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Delphi --> Lazarus (Fehler)

Beitrag von MitjaStachowiak »

Hm... Das ist aber doch OpenGL!?
Ich brauche DirectShow in meinem Programm, weil ich MP3 Streaming über OpenAL verwende. OpenAL scheint mit Lazarus kompaktibel zu sein, aber die Komponente, die ich zur Zeit für das Dekodieren vom MP3 verwende baut eben auf DirectShow :-(
Und da irgendwo kommt der Fehler "unerwartetes Dateiende". Den bekomme ich einfach nicht raus.

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Delphi --> Lazarus (Fehler)

Beitrag von theo »

Wie gesagt, ich versteh davon nix.
Google ist dein Freund. z.B. http://wiki.freepascal.org/FPC_and_DirectX/de

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Delphi --> Lazarus (Fehler)

Beitrag von MitjaStachowiak »

Hm... Das sieht schon mal seeehr gut aus. Die DirectShow.pas ist da leider nicht drinnen, jedoch konnte ich statt dessen (nach einigen kleinen Änderungen) eine DirectShow9.pas verwenden und die geht durch. :-)

Wenn ich meine anderen Projekte jetzt auch transformieren kann, bleibe ich denk' ich bei Lazarus.
Vielen Dank, für deine Hilfe.

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Delphi --> Lazarus (Fehler)

Beitrag von marcov »

MitjaStachowiak hat geschrieben:Hm... Das sieht schon mal seeehr gut aus. Die DirectShow.pas ist da leider nicht drinnen, jedoch konnte ich statt dessen (nach einigen kleinen Änderungen) eine DirectShow9.pas verwenden und die geht durch. :-)

Wenn ich meine anderen Projekte jetzt auch transformieren kann, bleibe ich denk' ich bei Lazarus.
Vielen Dank, für deine Hilfe.


http://clootie.ru/

Antworten