AGB  ·  Datenschutz  ·  Impressum  







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

DLL - Probs mit Strings

Ein Thema von TERWI · begonnen am 3. Okt 2011 · letzter Beitrag vom 3. Okt 2011
 
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#1

DLL - Probs mit Strings

  Alt 3. Okt 2011, 10:30
Moin zusammen !

Ich habe hier eine DLL, um DVB-Geräte abzufragen/zu steuern (von TechnoTrend, ttBdaDrvApi_Dll.dll).
Zu dieser DLL habe ich eine Source in C zur 'Ansprache'.

Die DLL lade ich dynamisch, was auch so weit mit den meisten Funktionen einwandfrei klappt.
Allerdings gibt es eine Func zum Auslesen von Gerätenamen/-Typen, mit der ich nicht klar komme - d.h. in den zurückgelieferten Strings eines Records lese ich nur 'dummes Zeug'. Das Funktions-Ergebnis ist ok, ich habe auch keine Fehler.

Deklarationen in C:
Code:
// Lists all possible frontend types.
typedef enum
{
    /// not set
    TYPE_FE_UNKNOWN = 0,
    /// DVB-C
    TYPE_FE_DVB_C,
    /// DVB-S
    TYPE_FE_DVB_S,
    /// DVB-S2
    TYPE_FE_DVB_S2,
    /// DVB-T
    TYPE_FE_DVB_T,
   /// ATSC
    TYPE_FE_ATSC,
    /// DSS
    TYPE_FE_DSS,
    /// DVB-C and DVB-T
    TYPE_FE_DVB_CT,
    /// TT-premium with Dual DVB-S2 and digital capture
    TYPE_FE_DVB_S2_PREM
} TYPE_FRONT_END;
...
///     Lists the bda filternames.
typedef struct
{
    char           szTunerFilterName[MAX_PATH];
    char           szTunerFilterName2[MAX_PATH];
    char           szCaptureFilterName[MAX_PATH];
    char           szAnlgTunerFilterName[MAX_PATH];
    char           szAnlgCaptureFilterName[MAX_PATH];
    char           szSTBCaptureFilterName[MAX_PATH];
    char           szProductName[MAX_PATH];
    TYPE_FRONT_END FeType;
} TS_FilterNames, *pTS_FilterNames;
...

// functions to get something from the driver
...
TTBDADRVAPI TYPE_RET_VAL bdaapiGetDevNameAndFEType(HANDLE hOpen, pTS_FilterNames FilterNames);
...
In Delphi hab ich das so umgesetzt:
Code:
...
type
  PTT_FilterNames = ^TT_FilterNames;
  TT_FilterNames = record //packed record
    TunerFilterName      : array[0..MAX_PATH] of char;
    TunerFilterName2      : array[0..MAX_PATH] of char;
    CaptureFilterName    : array[0..MAX_PATH] of char;
    AnlgTunerFilterName  : array[0..MAX_PATH] of char;
    AnlgCaptureFilterName : array[0..MAX_PATH] of char;
    STBCaptureFilterName : array[0..MAX_PATH] of char;
    ProductName          : array[0..MAX_PATH] of char;
    FeType               : word;
  end;
...
// als var in einer Klasse:
    _bdaapiGetDevNameAndFEType : function(TThwnd : HWND; var FilterNames : TT_FilterNames) : HRESULT; cdecl;
...
// Laden:
    @_bdaapiGetDevNameAndFEType := GetProcAddress(LibHdl, 'bdaapiGetDevNameAndFEType');
...
// Funktion ausführen
    if (_bdaapiGetDevNameAndFEType(Dev.DevHdl, Dev.FilterNames) = 0) then
    begin
      Log('--> TunerFilter: ' + strpas(Dev.FilterNames.TunerFilterName));
      Log('--> TunerFilter2: ' + strpas(Dev.FilterNames.TunerFilterName));
      Log('--> CaptureFilter: : ' + strpas(Dev.FilterNames.CaptureFilterName));
      Log('--> AnlgTunerFilter: : ' + strPas(Dev.FilterNames.AnlgTunerFilterName));
      Log('--> AnlgCaptureFilter: : ' + strPas(Dev.FilterNames.AnlgCaptureFilterName));
      Log('--> STBCaptureFilterName: : ' + strPas(Dev.FilterNames.STBCaptureFilterName));
      Log('--> ProductName: : ' + strPas(Dev.FilterNames.ProductName));
      case Dev.FilterNames.FeType of
        0: s := 'not set';
        1: s := 'DVB-C';
        2: s := 'DVB-S';
        3: s := 'DVB-S2';
        4: s := 'DVB-T';
        5: s := 'ATSC';
        6: s := 'DSS';
        7: s := 'DVB_CT';    
        8: s := 'DVB_S2_PREM';
        else s := 'unknown';
      end;
      Log('--> Front-End: ' + s);
    end;
Was mache ich hier falsch ?
  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 16:29 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