Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Powerbasic 1 zeilen problem (https://www.delphipraxis.net/115147-powerbasic-1-zeilen-problem.html)

EWeiss 8. Jun 2008 09:46

Re: Powerbasic 1 zeilen problem
 
vom Plugin PB wird
Code:
BBP.Version = MAKDWD(1, 0) '// Version 1.0"
gesendet
in PB und Delphi deklariert als DWORD
Delphi-Quellcode:
Version     : DWORD; // LOWRD major, HIWRD minor.
LOWord(BBP.Version) sollte die 1 zurückgeben
HiWord(BB.Version) eigentlich die 0 enthalten

ist aber nur eine 1 sichtbar
Auch hier die Variable nicht korrekt ?

kopier mal meinen Record hier rein bevor ich nachher für jedes einzelne Teil frage.
Delphi-Quellcode:
  PBbpPluginRec = ^TBbpPluginRec;
  TBbpPluginRec = record
    Msg         : DWORD;                // The plugin's message
                                          // (see above constant list).
    ParentWindow : HWND;                 // parent window
                                          //(filled in by calling app)
    DC          : HDC;
    RC          : HGLRC;
    Lpeak       : WORD;                 // The left audio channel peak value
                                          // (while in play mode).
    Rpeak       : WORD;                 // The right audio channel peak value
                                          // (while in play mode).
    Title       : array [0..31] of Char; // Plugin's name or title.
    Author      : array [0..61] of Char; // Plugin's author name.
    Version     : DWORD;                // LOWRD major, HIWRD minor.
    RenderTo    : DWORD;                // BBP_GDIPLUS,
                                          // BBP_OPENGL,
                                          // BBP_DIRECTX.
    BackARGB    : DWORD;                // Default ARGB color background.
    FFTdata     : DWORD;                // DWORD pointer to the FFT()
                                          // AS SINGLE array.
    FFTsize     : WORD;                 // Size of the FFT array.

    WinMsg      : LongInt;              // True Windows message.
    wParam      : LongInt;              // wParam
    lParam      : LongInt;              // lParam'

    WIMdata     : DWORD;                // DWORD pointer to the wave MM_WIM_DATA.
    MediaLength : DWORD;                // Media length.
    MediaPos    : DWORD;                // Media pos.

    Reserved    : array [0..97] of Char; // Reserved for future extension.
  end;
was stimmt bei einigen punkten in Delphi gegenüber PB nicht ?
Einiges haben wir ja schon geklärt. ;)

EDIT:
Version habe ich geklärt..
Delphi-Quellcode:
const
  cverfor = '%d.%d';

  function BBP_Plugin(BBP : TBbpPluginRec): Integer; stdcall;
  begin
    Result := BbpPluginFunc(BBP);

    BassBoxInfo^.Title := BBP.Title;
    BassBoxInfo^.Author := BBP.Author;
    Version            := (format(cverfor,
                                   [LoWord(BBP.Version),
                                    HiWord(BBP.Version)]));
  end;
gruss Emil

marabu 8. Jun 2008 12:56

Re: Powerbasic 1 zeilen problem
 
Author muss [0..63] heißen.

LONG (PB) entspricht Integer (Delphi), aber es ist schon gut, wenn du aus LONG ein hDC machst.

EWeiss 8. Jun 2008 13:04

Re: Powerbasic 1 zeilen problem
 
Zitat:

Zitat von marabu
Author muss [0..63] heißen.

LONG (PB) entspricht Integer (Delphi), aber es ist schon gut, wenn du aus LONG ein hDC machst.

muss das mit den 63 noch ändern.
Flüchtigkeits Fehler . Danke

Mit dem hdc habe ich so gemacht damit es zu C++ compatibel ist
da mag man es nicht wenn man Integer anstatt ein hdc zum zeichnen übergibt ;)

gruss Emil

EWeiss 8. Jun 2008 15:48

Re: Powerbasic 1 zeilen problem
 
eine frage wegen dem ARGB
Was müßte ich da für eine wert schicken ?
bzw.. reicht da DWORD

im Plugin wird die GL Farbe gesplittet
Delphi-Quellcode:
CALL BBP_SplitColorARGB(BBP.BackARGB, A?, R?, G?, B?)
Ich übergebe einfach mal 0 weil ich im moment noch nicht weiss was er erwartet.

Schicke ich die Daten so rüber

Delphi-Quellcode:
     
BassBoxInfo^.Msg := BBP_CREATE;
  if BBP_Plugin(BassBoxInfo^) = BBP_SUCCESS then
  begin
    BassBoxInfo^.Msg := BBP_INIT;
    BassBoxInfo^.ParentWindow := BB_VisDataThread.Handle;
    BassBoxInfo^.DC          := h_DC;
    BassBoxInfo^.rc          := h_RC;
    BassBoxInfo^.BackARGB    := 0; //SK_AEROCOLOR()
    BassBoxInfo^.FFTsize     := 256;
  end;
dann funktioniert das noch und ich kann die nächsten Daten übergeben.
Sende ich die nächsten Daten mit ParentWindow usw.. rufe dann das nochmal auf
Delphi-Quellcode:
if BBP_Plugin(BassBoxInfo^) = BBP_SUCCESS then
dann gibts ne Fehlermeldung Access Violation in ntdll.dll

gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:15 Uhr.
Seite 2 von 2     12   

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