AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe bei Übersetzung VB to Delphi

Ein Thema von bluescreen25 · begonnen am 22. Jan 2009 · letzter Beitrag vom 23. Jan 2009
Antwort Antwort
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: Hilfe bei Übersetzung VB to Delphi

  Alt 22. Jan 2009, 17:31
Zitat von mkinzler:
Dann übergebe mal explizit die Adressen der Parameter
Hmm, Hilfestellung ?

Jede Funktion aus der Dll wird so übergeben:

Delphi-Quellcode:
type
  TFNGetAFList = function(var buf:Single; len: Integer):Boolean;stdcall;
  TFNGetRDSText = function(const buf: string; var len: Integer): Boolean; stdcall;
...
...
var
  GetAFList : TFNGetAFList = nil;
  GetRDSText : TFNGetRDSText = nil;
..
..
function LoadDll: Boolean;
begin
  result := False;
  RadioLib := LoadLibrary('XYZ.Dll');
  if RadioLib <> 0 then
  begin
    @GetAFList := GetProcAddress(RadioLib, 'VB_GetAFList');
    @GetRDSText := GetProcAddress(RadioLib, 'VB_GetRDSText');
    ...
    ...
    result := True;
  end;
end;

Hier habe ich mal 2 Funktionen , die GetRDSText funzt, die GetAFList nicht.

Der umgewandelte VB-Code von GetRDSText sieht so aus:

Delphi-Quellcode:
function WGetRDSText:String;
var
  sBuffer,Text :String;
  iBufferLen :Integer;
begin
  Result := '';
  SetLength(sBuffer, 256);
  If GetRDSText(sBuffer,iBufferLen) then
  Text := trim(copy(sBuffer,1,iBufferLen));
  Result := Text;
end;
hier der VB-Code dazu:
Delphi-Quellcode:
Public Function WVB_GetRDSText() As String
    
    Dim sBuffer As String * 256
    Dim iBufferLen As Integer
    Dim lRet As Long
    
    If (VB_GetRDSText(sBuffer, iBufferLen)) Then
        WVB_GetRDSText = Left(sBuffer, iBufferLen)
    End If
    
End Function

und der von GetAFList

Delphi-Quellcode:
function WGetAFList:String;
var
  aflist : array of Single;
  arysize: Integer;
  LoopArr: Integer;
begin
    Result := '';

    arysize := 25;
    SetLength(aflist, arysize-1);

    If GetAFList(aflist[0], arysize) then <---- hier kommt die exception !
    SetLength(aflist, arysize-1);
    For LoopArr := Low(aflist) To high(aflist) do
    Result := FloattoStr(aflist[LoopArr]);
End;
sowie der VB-Code:
Delphi-Quellcode:
Public Function WVB_GetAFList() As Single()
    Dim aflist() As Single
    Dim arysize As Long
    Dim LoopArr As Single
    
    ' Create the array
arysize = 25
ReDim aflist(arysize - 1) As Single

If (VB_GetAFList(aflist(0), arysize)) Then
ReDim Preserve aflist(arysize - 1)
For LoopArr = 0 To UBound(aflist)
Debug.Print "AFLIST = " & aflist(LoopArr)
Next LoopArr
End If
WVB_GetAFList = aflist
End Function


oder meinst etwas anderes ?

Gruß, bluescreen
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  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 15:06 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