AGB  ·  Datenschutz  ·  Impressum  







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

Delphi type nach c#

Ein Thema von EWeiss · begonnen am 5. Nov 2014 · letzter Beitrag vom 6. Nov 2014
 
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: Delphi type nach c#

  Alt 6. Nov 2014, 05:16
Zitat:
Anders würde man das in Delphi auch nicht machen können.
In Delphi mache ich folgendes.

Delphi-Quellcode:
function TBASSBoxVis.GetWaveData: TWaveData;
begin
  // Get Wave data from stream
  if Basswasapi_Loaded and USE_WASAPI then
    BASS_WASAPI_GetData(@Result, 1024)
  else
  Bass_ChannelGetdata(BB_VisRenderThread.Stream, @Result, 1024);

end;

function TBASSBoxVis.GetWaveData32: TWaveData32;
begin
  // Get Wave data from 32 Bit stream
  if Basswasapi_Loaded and USE_WASAPI then
    BASS_WASAPI_GetData(@Result, 4096)
  else
  Bass_ChannelGetdata(BB_VisRenderThread.Stream, @Result, 4096);

end;
Wird wie folgt ausgeführt
Delphi-Quellcode:
    if (ChanInfo.flags and BASS_SAMPLE_FLOAT) = BASS_SAMPLE_FLOAT then
    begin
      FWaveData32 := GetWaveData32;
      for i := 0 to 1023 do
        if FWaveData32[i] > 0 then
          FWaveData[i] := round(Min(FWaveData32[i] * 32768, 32767))
        else
        FWaveData[i] := round(Max(FWaveData32[i] * 32768, -32768));
    end else
    FWaveData := GetWaveData;

    RenderOpenGL(@FWaveData, @FFFTData, BB_VisRenderThread.StreamPos);
Dort nehme ich einen pointer was ohne Probleme funktioniert.

Delphi-Quellcode:
function TBASSBoxVis.RenderOpenGL(WaveData, FFT: Pointer;
  MediaPos: Dword): BOOL;
Für wasapi gibt es eine Überladung..
Code:
public extern static int BASS_WASAPI_GetData(IntPtr buffer, int length);
Auch für die andere Funktion könnte ich einen Pointer verwenden
Code:
public extern static int BASS_ChannelGetData(int handle, IntPtr buffer, int length);
Dann wäre ich von der API her der von Delphi schon mal gleich.
Jetzt wäre dann nur noch zu klären was übergebe ich als Pointer.

In Delphi wäre das der Pointer auf TWaveData
In c# mag er das aber nicht wenn ich den Pointer auf die Class WaveData zurück gebe.
Zitat:
Error 1 'MediaPortal.UI.Presentation.Players.WaveData32' is a 'type' but is used like a 'variable' D:\MP 2.0\MediaPortal-2\MediaPortal\Source\UI\Players\BassPlayer\BassPla yer.cs 449 63 BassPlayer

Irgendwie hab ich in C# da kleine Probleme.. kann nur besser werden

gruss

Geändert von EWeiss ( 6. Nov 2014 um 05:33 Uhr)
  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:57 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