Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hilfe bei Übersetzung VB to Delphi (https://www.delphipraxis.net/128001-hilfe-bei-uebersetzung-vbulletin-delphi.html)

bluescreen25 22. Jan 2009 14:27


Hilfe bei Übersetzung VB to Delphi
 
Kann jemand bei der Übersetzung aushelfen ?

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

meine kläglicher Versuch:

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
    SetLength(aflist, arysize-1);
    For LoopArr := Low(aflist) To high(aflist) do
    Result := floattostr(aflist[LoopArr]);
End;
Gruß, bluescreen

mkinzler 22. Jan 2009 14:29

Re: Hilfe bei Übersetzung VB to Delphi
 
Existier die Funktion GetAFList() ?

bluescreen25 22. Jan 2009 14:34

Re: Hilfe bei Übersetzung VB to Delphi
 
Zitat:

Zitat von mkinzler
Existier die Funktion GetAFList() ?

in einer dll als export

Delphi-Quellcode:
Public Declare Function VB_GetAFList Lib "USBRadio.dll" (ByRef ary As Single, ByRef size As Long) As Boolean
Delphi-Quellcode:
type
 TFNGetAFList         = function(buf:Single; len: Integer):Boolean;stdcall;
...
Mit anderen Funktionen aus der dll habe ich keine Probleme, scheint, das ich mit den arrays nicht richtig umgehe...exception wenn "GetAFList" ausgeführt wird.

Gruß, bluescreen

matashen 22. Jan 2009 14:36

Re: Hilfe bei Übersetzung VB to Delphi
 
Hallo,

Wenn du das array von vornhereine kennst würd ich das vordeklarieren

Delphi-Quellcode:
aflist : array[0..24] of Single;

und die for-schleife würde ich auch einfacher schreiben

Delphi-Quellcode:
 For LoopArr := 0 To 24 do
wobei loopArr sollte keine Float sondern ganzzahl sein, sowas wie

var LoopArr: integer;

Wenn dein array eh immer 25 Einträge hat dann macht das setzen der länge und die abfragen zur Länge wärend der Laufzeit keinen Sinn und der Code wird nur unübersichtlicher.

Meine Meinung dazu...

Gruß Matthias

mkinzler 22. Jan 2009 14:40

Re: Hilfe bei Übersetzung VB to Delphi
 
Zitat:

Wenn du das array von vornhereine kennst würd ich das vordeklarieren
Und wenn nicht?
Zitat:

und die for-schleife würde ich auch einfacher schreiben
Warum auch sauber wenn es dreckig geht :zwinker: Eine Schleife mit den ermittelten Grenzen ist auf jeden Fall besser

Versuch mal
Delphi-Quellcode:
TFNGetAFList         = function(var buf:Single; len: Integer):Boolean;stdcall;

bluescreen25 22. Jan 2009 14:41

Re: Hilfe bei Übersetzung VB to Delphi
 
Zitat:

Zitat von matashen
Hallo,

Wenn du das array von vornhereine kennst würd ich das vordeklarieren

Delphi-Quellcode:
aflist : array[0..24] of Single;

und die for-schleife würde ich auch einfacher schreiben

Delphi-Quellcode:
 For LoopArr := 0 To 24 do
wobei loopArr sollte keine Float sondern ganzzahl sein, sowas wie

var LoopArr: integer;

Wenn dein array eh immer 25 Einträge hat dann macht das setzen der länge und die abfragen zur Länge wärend der Laufzeit keinen Sinn und der Code wird nur unübersichtlicher.

Meine Meinung dazu...

Gruß Matthias

Danke, aber ich weiss nicht wie groß das array wird...es werden von einem Radio AF-Frequenzen eingepflegt, das ist vom Radiosender abhängig...

ein post über dir habe ich die Ableitung aus der DLL sowie den VB-Code getextet...

Gruß, bluescreen

bluescreen25 22. Jan 2009 14:48

Re: Hilfe bei Übersetzung VB to Delphi
 
Zitat:

Zitat von mkinzler
Zitat:

Wenn du das array von vornhereine kennst würd ich das vordeklarieren
Und wenn nicht?
Zitat:

und die for-schleife würde ich auch einfacher schreiben
Warum auch sauber wenn es dreckig geht :zwinker: Eine Schleife mit den ermittelten Grenzen ist auf jeden Fall besser

Versuch mal
Delphi-Quellcode:
TFNGetAFList         = function(var buf:Single; len: Integer):Boolean;stdcall;

danke, das hatte ich auch schon versucht...

hier mal der export aus der dll selbst....

Delphi-Quellcode:
USBRADIO_API bool __stdcall      VB_GetAFList (float* ary, int* arysize);
Hmm keiner einen Fehler gefunden ?

Gruß, bluescreen

matashen 22. Jan 2009 14:56

Re: Hilfe bei Übersetzung VB to Delphi
 
Wenn du die Arraygröße nicht kennst,dann klar war mein Post n Schwachsinn :kotz:

VB_GetAFList
Ist deine deklaration von dir ?!, ich dachte aber immer das die eingebundenen Methoden aus dlls genauso heißen muss wie in der DLL. Mit genau der gleichen groß/kleinschreibung, also

VB_GetEon

Oder lieg ich da (schon wieder) falsch

Gruß Matthias

bluescreen25 22. Jan 2009 15:01

Re: Hilfe bei Übersetzung VB to Delphi
 
Zitat:

Zitat von matashen
Wenn du die Arraygröße nicht kennst,dann klar war mein Post n Schwachsinn :kotz:

VB_GetAFList
Ist deine deklaration von dir ?!, ich dachte aber immer das die eingebundenen Methoden aus dlls genauso heißen muss wie in der DLL. Mit genau der gleichen groß/kleinschreibung, also

VB_GetEon

Oder lieg ich da (schon wieder) falsch

Gruß Matthias

Das mit der richtigen Übernahme ist richtig, hatte die falsche Zeile aus dem Export kopiert, sorry

Delphi-Quellcode:
USBRADIO_API bool __stdcall      VB_GetAFList (float* ary, int* arysize);
ist in meinem Code aber richtig, nur im Posting hier falsch angegeben gewesen.

Problem ist noch nicht gelöst !!

Der VB-Code funzt, der Delphi leider nicht.

Gruß, bluescreen

mkinzler 22. Jan 2009 15:10

Re: Hilfe bei Übersetzung VB to Delphi
 
Dann übergebe mal explizit die Adressen der Parameter


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.
Seite 1 von 4  1 23     Letzte »    

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