AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Lazarus: SYNCPROC mit falschem Parameter
Thema durchsuchen
Ansicht
Themen-Optionen

Lazarus: SYNCPROC mit falschem Parameter

Ein Thema von Philipp1977 · begonnen am 20. Aug 2014 · letzter Beitrag vom 21. Aug 2014
Antwort Antwort
Philipp1977

Registriert seit: 7. Aug 2014
9 Beiträge
 
#1

Lazarus: SYNCPROC mit falschem Parameter

  Alt 20. Aug 2014, 20:06
Hallo,

folgende Zeile compiliert mit Delphi7 ohne Probleme...mit Lazarus gibts eine Fehlermeldung:

Code:
BASS_ChannelSetSync(chan, BASS_SYNC_META, 0, @MetaSync, nil);
Die Fehlermeldung kommt bei @MetaSync und zwar:

Error: Incompatible type for arg no. 4: Got "<address of procedure(LongWord,LongWord,LongWord,LongWord);Std Call>", expected "<procedure variable type of procedure(LongWord,LongWord,LongWord,Pointer);StdC all>"

Die Sync-Procedure ist wie folgt definiert:

procedure MetaSync(handle: HSYNC; channel, data, user: DWORD); stdcall;

Weiß jemand zufällig eine Lösung?

Geändert von Philipp1977 (21. Aug 2014 um 15:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Lazarus-Problem

  Alt 20. Aug 2014, 20:09
Die Sync-Procedure ist wie folgt definiert:
Die Frage ist eher wie BASS_ChannelSetSync definiert ist.

Weiß jemand zufällig eine Lösung?
Wie wäre es, wenn du statt einem Pointer einen Integer (DWORD) übergibst?

nil, 0, typecast usw.


Oder mal den Idioten fragst, welcher das BASS_ChannelSetSync falsch deklariert hat.
$2B or not $2B

Geändert von himitsu (20. Aug 2014 um 20:23 Uhr)
  Mit Zitat antworten Zitat
Philipp1977

Registriert seit: 7. Aug 2014
9 Beiträge
 
#3

AW: Lazarus-Problem

  Alt 20. Aug 2014, 20:16
Das hat leider keine Änderung gebracht, dafür kommt jetzt ne neue Fehlermeldung:

Error: Incompatible type for arg no. 5: Got "ShortInt", expected "Pointer"

Aber das ist ja auch arg no.5, ursprünglich hatte er aber an arg no.4 rumgemeckert
  Mit Zitat antworten Zitat
Philipp1977

Registriert seit: 7. Aug 2014
9 Beiträge
 
#4

AW: Lazarus-Problem

  Alt 20. Aug 2014, 20:17
Das ist übrigens die Definition:

HSYNC BASS_ChannelSetSync(
DWORD handle,
DWORD type,
QWORD param,
SYNCPROC *proc,
void *user
);
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Lazarus-Problem

  Alt 20. Aug 2014, 20:22
War in der Zeile verruscht.
(hatte mich schon etwas gewundert, wegen den hier 4 und da 5 Parametern ... Fehler bei Parameter 4 passte aber auf beiden Seiten)

Die richtige Frage ist also "Wie ist der Typ SYNCPROC definiert?".


Zitat:
procedure MetaSync(handle: HSYNC; channel: DWORD; data, user: DWORD); stdcall
$2B or not $2B

Geändert von himitsu (20. Aug 2014 um 20:27 Uhr)
  Mit Zitat antworten Zitat
Philipp1977

Registriert seit: 7. Aug 2014
9 Beiträge
 
#6

AW: Lazarus-Problem

  Alt 20. Aug 2014, 20:26
Die kommt aus der Bass.dll und ist so definiert:

Code:
SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Lazarus-Problem

  Alt 20. Aug 2014, 20:28
Und nun schau mal, wie deine Funktion deklariert ist.
Zitat:
Die Sync-Procedure ist wie folgt definiert:

procedure MetaSync(handle: HSYNC; channel, data, user: DWORD); stdcall;

PS: Es wäre nett, wenn du dem ersten Beitrag einen anderen Titel gibst.
Stell die mal vor alle würden nur noch Delphi-Problem, .Net-Problem, HTML-Problem oder Lazarus-Problem da hinschreiben.
$2B or not $2B
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Lazarus-Problem

  Alt 21. Aug 2014, 09:35
Ersetze die Zeile

{$mode objfpc}{$H+}
durch

{$mode delphi}{$H+}
und schon läuft alles wie eine 1.

P.S. ist sehr oft die 3. Zeile in jeder Unit.
  Mit Zitat antworten Zitat
Philipp1977

Registriert seit: 7. Aug 2014
9 Beiträge
 
#9

AW: Lazarus-Problem

  Alt 21. Aug 2014, 14:48
Danke für die Antwort Sowohl die Tipps von OrNEC als auch von himitsu haben das Probelm gelöst.
Kann ich den Titel tatsächlich bearbeiten? Wenn ich beim ersten Beitrag auf bearbeiten klicke, kann ich nur den Beitrag bearbeiten aber nicht den Titel...
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.893 Beiträge
 
Delphi 12 Athens
 
#10

AW: Lazarus-Problem

  Alt 21. Aug 2014, 15:05
Klicke unten einmal auf erweitert, wenn Du im Bearbeiten bist, dann kannst Du auch den Titel editieren.
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz