AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Dynamisches Array oder Klasse als Array auslegen
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Array oder Klasse als Array auslegen

Ein Thema von EWeiss · begonnen am 22. Sep 2006 · letzter Beitrag vom 30. Sep 2006
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 23. Sep 2006, 18:52
Eher so:

Delphi-Quellcode:
begin
  DspPtrArray := gWinampDSP; // natürlich die globale Variable !!
  // ...
end;
Ich weiß nicht wie du den Namenskonflikt aufgelöst hast.

Zitat von EWeiss:
kann ich hier im Thread weiter machen oder muss ich für jede Frage einen neuen aufmachen?
Ich persönlich glaube, dass eine Abtrennung momentan keinen Sinn macht, da sich momentan alles um die Portierung einer bestimmten Prozedur dreht. Sobald du das Gefühl hast den Schwerpunkt des Themas zu verlagern mache einen neuen thread auf.

Grüße

marabu
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 23. Sep 2006, 19:20
Delphi-Quellcode:
begin
  DspPtrArray := gWinampDSP; // natürlich die globale Variable !!
  // ...
end;
Verstehe ich jetzt nicht.
Meine Globalen variablen sind diese.

Muss ich jetzt noch eine hinzufügen um die Variable DspPtrArray zu initialisieren?
Sorry für die vielleicht dumme Frage muss mich erst mal darin einarbeiten.

Neue Sprache schwere Sprache

Delphi-Quellcode:
implementation

var
 winampDSPcounter : DWORD   = 0;
 winampDSPhandle : DWORD   = 0;
 PlayState : DWORD;
 DspPtrArray : PDspPtrArray = nil;
 winampDSP : PWinampDSPInfo;
 pGetMod : PWinampDSPHeader;
gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 23. Sep 2006, 19:37
Du hattest in deinem Eröffnungsbeitrag aus dem C++ Code zitiert:

Code:
WINAMPPLUGINPROPDSP **winampDSP = NULL;
Wenn du den Namen für deine globale Variable in Object Pascal beibehalten willst, dann so:

Delphi-Quellcode:
var
  winampDSP: PPWinAmpPluginPropDSP; // siehe Beitrag #2
Allerdings darf dann der Parameter der Prozedur nicht winampDSP heißen, da die C++ Bezeichner wegen der case sensitivity nicht 1:1 nach Object Pascal übertragen werden können:

Delphi-Quellcode:
procedure AddDSP(dsp: PWinampDSPInfo);
var
  a: DWORD;
begin
  DspPtrArray := winampDSP;
  // ...
  DspPtrArray^[a] := dsp;
marabu
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 23. Sep 2006, 19:45
Leider ist jetzt alles etwas durcheinander geraten!
Dürfte ich dir den aktuellen stand( Quelltext) zuschicken?

Soll nicht heißen das du daran arbeiten sollst.
So könntest du dir aber ein aktuelleres Bild von den Fortschritt machen

Die Variablen aus dem c++ Code sind nicht mehr identisch mit dem in Delphi
da ich der übersicht wegen doch lieber Hausgemachte Delphi Variablen verwenden möchte.

gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 23. Sep 2006, 20:39
Zitat von EWeiss:
Dürfte ich dir den aktuellen stand( Quelltext) zuschicken?
Wenn du den Quelltext nur mir zuschickst, dann übst du moralischen Druck auf mich aus und ich muss dich vielleicht trotzdem enttäuschen. Stelle den Quelltext doch in diesen thread ein - dann können dir auch andere helfen, falls ich überraschend verscheide oder meine Frau mir mit dem Baseballschläger den Zugang zum PC verwehrt. Ist das ein deal?

Freundliche Grüße

marabu

PS: So ein fortschrittliches Seniorenheim - mit Internetzugang ...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 23. Sep 2006, 21:20
Zitat von marabu:
Zitat von EWeiss:
Dürfte ich dir den aktuellen stand( Quelltext) zuschicken?
Wenn du den Quelltext nur mir zuschickst, dann übst du moralischen Druck auf mich aus und ich muss dich vielleicht trotzdem enttäuschen. Stelle den Quelltext doch in diesen thread ein - dann können dir auch andere helfen, falls ich überraschend verscheide oder meine Frau mir mit dem Baseballschläger den Zugang zum PC verwehrt. Ist das ein deal?

Freundliche Grüße

marabu

PS: So ein fortschrittliches Seniorenheim - mit Internetzugang ...
Wäre kein Problem was den Delphi Quelltext angeht.
Beim C++ Quelltext sieht das anders aus.

Muss mich erst informieren ob ich das darf.. Will den Author nicht übergehen

Auch Freundliche grüße.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 24. Sep 2006, 09:18
Bin immer noch in der procedure

procedure AddDSP(winampDsp: WINAMPPLUGINPROPDSP); stdcall; dort befindet sich im Original die Zeile
Code:
winampDsp->handle = ++winampDSPhandle;
Habe gelesen das ++ das gleiche sein soll wie Inc()

als Präfix-Operator:
++i;

inc(i); oder i:= i + 1;

Das winampDsp^.handle hat den wert 50 würde also wenn ich das so umsetze den Wert 1 bekommen
Das scheint mir aber irgenwie nicht das richtige zu sein.

gruß ,..
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#18

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 24. Sep 2006, 10:13
Guten Morgen.

Code:
winampDsp->handle = ++winampDSPhandle;
Das entspricht:

Delphi-Quellcode:
// durch den vorangestellten Operator ++ zuerst erhöhen:
Inc(winampDSPhandle);
// dann zuweisen:
winampDsp^.handle := winampDSPhandle;
Denke wieder daran, dass ich mich mit den Bezeichner auf den C++ Code beziehe und du diese Namen in Delphi abwandeln musst.

Grüße

marabu
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 24. Sep 2006, 11:18
Zitat:
Denke wieder daran, dass ich mich mit den Bezeichner auf den C++ Code beziehe und du diese Namen in Delphi abwandeln musst.
Auch einen guten Morgen ...

ja werde ich
Was ich das bisher so sehe ist es fast unmöglich den Quelltext von C++ nach Delphi zu übersetzen
zu viele unterschiede und man weiß nicht wo man ansetzen soll.

Habe mich die halbe Nacht mit dem Problem beschäftigt warum beim initialisieren
von den modulen immer ein Totalcrash auftritt.

Bin dann darauf gekommen einen globalen Pointer als Funktion zu definieren
und diesen mit der aktiven ProcessAdresse zu verbinden.
Die Module laufen nun aber mit einschränkung.

Delphi-Quellcode:
pGetMod : function : pointer; stdcall;
pGetMod := GetProcAddress(winampDsp^.hDll, 'winampDSPGetHeader2');
Erst dadurch war es mir möglich die Module richtig einzulesen.
Für euch mag das selbstverständlich sein .. aber bei mir mit nicht so viel wissen
was Delphi angeht war das schon ein fortschritt.

Kannst vielleicht mal über diese Funktion schauen?
Da stimmt irgendetwas mit den IF abfrageverbund nicht
Fehler!

Zitat:
[Pascal Warning] BassWaDSP.pas(573): W1035 Return value of function 'BASS_WADSP_Load' might be undefined



Delphi-Quellcode:
 // Läd ein Winamp DSP Plugin und übergibt das handle
 // Koordinaten und ein User Callback können übergeben werden
function BASS_WADSP_Load(const dspfile: PChar; x, y, Width, Height: integer;
                         proc: WINAMPWINPROC): HDSP; stdcall;

var
  winampDsp: WINAMPPLUGINPROPDSP;
  cnt: integer;

begin
  winampDsp := AllocMem(sizeof(WINAMPPLUGINPROPDSP));
  FillChar(winampDsp, 0, sizeof(winampDsp));

  Saved8087CW := Default8087CW;
  //FPU - Exceptions deaktivieren
  Set8087CW($133f);

  // Library laden
  // zuerst mit unicode versuchen
  winampDsp^.hDll := LoadLibraryW(PWideChar(dspfile));
  if (not winampDsp^.hDll) <> 0 then
  begin
    // ansonsten Ansi
    winampDsp^.hDll := LoadLibrary(dspfile);
  end;

  // Exceptions zurück auf Defaultwert
  Set8087CW(Saved8087CW);

  if winampDsp^.hDll <> 0 then
  begin
    pGetMod := GetProcAddress(winampDsp^.hDll, 'winampDSPGetHeader2');
    if pGetMod <> nil then
    begin
      // Fake Winamp Window erstellen
      if (Create_Winamp_Window(winampDsp, x, y, Width, Height, proc)) = True then
      begin
        cnt := 0;
        winampDsp^.pModule := pGetMod;
        if winampDsp^.pModule <> nil then
        begin
          // Schleife durchlaufen bis kein Modul mehr gefunden wurde
          repeat
            Inc(cnt);
          until winampDsp^.pModule^.getModule(cnt) = nil;
          // Anzahl der Module speichern
          winampDsp^.NumberOfModules := cnt;
          winampDsp^.module := -1;
          InitializeCriticalSection(winampDsp^.csH);
          // Addiere ein neues Winamp DSP Plugin
          AddDSP(winampDsp);
          // Übergebe das Handle
          Result := winampDsp^.handle
      end else
        // Bei Fehler Winamp Fake Window beenden
        Destroy_Winamp_Window(winampDsp);
    end;
    // Library freigeben
    FreeLibrary(winampDsp^.hDll);
    end else
    // Hierhin, wenn irgend ein fehler autritt.
    FreeMem(winampDsp);
  end else
    Result := 0;

end;
GRüße
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#20

Re: Dynamisches Array oder Klasse als Array auslegen

  Alt 24. Sep 2006, 11:28
Um dem Compiler Entwarnung zu geben: Nimm die Zuweisung von 0 an Result aus dem äußeren ELSE-Zweig weg und stelle sie ohne Bedingung vor das IF Statement.

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


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 00:09 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