AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem: Format %p ungültig o. nicht kompatibel mit Argument
Thema durchsuchen
Ansicht
Themen-Optionen

Problem: Format %p ungültig o. nicht kompatibel mit Argument

Ein Thema von carknue · begonnen am 20. Aug 2005 · letzter Beitrag vom 20. Aug 2005
 
carknue

Registriert seit: 26. Mai 2005
37 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Problem: Format %p ungültig o. nicht kompatibel mit Argu

  Alt 20. Aug 2005, 19:28
short von C++ entspricht smallint bei Delphi.
Shortint ist zu klein, obwohl es für die auftretenden Werte
reichen würde.

Es geht um die Funktion FrontendSetMode aus der header Datei.

Delphi-Quellcode:
Procedure Tform1.SetDWTMode(mode: smallint);
begin
if mode=1 then FrontendSetMode(1);
if mode=2 then FrontendSetMode(2);
if mode=6 then FrontendSetMode(6);
end;
Declariert ist es wie folgt:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
   
    Procedure SetDWTMode(mode: smallint);
    procedure SetFreq(freq: string);
    procedure dwtmodClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure checkaorClick(Sender: TObject);
   
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
 
  dwt: smallint;

  FrontendOpen: function(): Integer; stdcall;
  FrontendClose: function(): Integer; stdcall;
  FrontendSetFrequency: function(freq: double): smallint; stdcall;
  FrontendSetMode: function(mode: smallint): smallint; stdcall;
  FrontendSetAntennaMode: function(n: smallint): smallint; stdcall;

implementation

{$R *.dfm}
Die dll lade ich dann so:
Delphi-Quellcode:

Dll:=LoadLibrary('afgusbfe.dll');
   dwt:=69;

   if (Dll=0) then ShowMessage('afgusbfe.dll not found !')
   else begin
    FrontendOpen:=GetProcAddress(dll,'FrontendOpen');
    FrontendClose:=GetProcAddress(dll,'FrontendClose');
    FrontendSetFrequency:=GetProcAddress(dll,'FrontendSetFrequency');
    FrontendSetMode:=GetProcAddress(dll,'FrontendSetMode');
    FrontendSetAntennaMode:=GetProcAddress(dll,'FrontendSetAntennaMode');

     dwt:=FrontendOpen;
     dwt:=FrontendSetFrequency(3995000);
     dwt:=FrontendSetMode(1);
Bis hier geht der Aufruf von dwt:=FrontendSetMode(1); einwandfrei.
In dieser Procedure kommt aber die Formatfehlermeldung:
Delphi-Quellcode:
Procedure Tform1.SetDWTMode(mode: smallint);
begin
if mode=1 then dwt:=FrontendSetMode(1);
if mode=2 then dwt:=FrontendSetMode(2);
if mode=6 then dwt:=FrontendSetMode(6);
end;
In dieser Procedure klappt es dagegen wieder:

Delphi-Quellcode:
procedure Tform1.SetFreq(freq: string);
var rfreq: integer;
    dwtfreq:double;

begin

rfreq:=strtoint(freq);
dwtfreq:=rfreq*1000;
dwt:=FrontendSetFrequency(dwtfreq);
label2.Caption:=inttostr(dwt);
dwt:=FrontendSetMode(1);

end;
  Mit Zitat antworten Zitat
 


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 14:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz