AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Probleme mit Threads und deren übergabe (wartezeit)
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Threads und deren übergabe (wartezeit)

Ein Thema von BassFan · begonnen am 20. Jul 2006 · letzter Beitrag vom 21. Jul 2006
 
BassFan
(Gast)

n/a Beiträge
 
#1

Probleme mit Threads und deren übergabe (wartezeit)

  Alt 20. Jul 2006, 16:34
Langsam komm ich nicht mehr klar..

Warum werden anweisungen die man in Delphi übergibt nicht sofort ausgeführt.
Wenn ich mein HWND erhalten habe warum kann ich es dann nicht direkt übergeben?

In VB gibt es die GET/LET funktionen
Was mit Let übergeben wird kann mit Get direkt ohne umwege zurück geholt werden.
Bei Delphi kommt Meldung : Linke seite kann nix zugewiesen werden.

Wenn ich einen neuen thread beginne warum wird dieser nicht erst abgearbeitet bevor
eine neue Function übergeben wird?

Der Code soll folgendermaßen abgearbeitet werden.

Thread erstellen mit BeginThread(xxx ..)
Im Thread! Sobald die Klasse Window erstellt ist ist auch das Handle des Window bekannt
dieses möchte ich ohne umwege direkt übergeben damit es der Anwendung bekannt ist
bevor das Plugin gestartet wird.

Ist zwar VB habe es aber mal mit Delphi Formatiert dann kann man es besser lesen.
Hier mal der Ablauf
Delphi-Quellcode:
        //Das ausgewählte Plugin starten
        If (lstPlugins.ListIndex >= 0) Then
            alist = Split(lstPathList.List(lstPlugins.ListIndex), ",")
            //Neuen Thread erstellen
            VisChan = BASS_WINAMPVIS_CreateVis(alist(0), CLng(Combo1.ListIndex), 0)
            //Song Titel übergeben
            Text1.Text = "Hmmmmmmm was nun."
            //Update intervall für Timer übergeben
            HScroll4.Enabled = False
            
            //Hwnd des Winamp Emulations Fenster erfragen
            hwndWinamp = BASS_WINAMPVIS_GetAmpHwnd
            lblWHandle = hwndWinamp
            //ShowWindow hwndWinamp, SW_SHOW
            
            //Position der Playliste setzen
            SendMessage ByVal hwndWinamp, WM_USER, ByVal PLPos, ByVal IPC_SETPLAYLISTPOS
            //Datei Infos übergeben
            //VisChan = Handle
            //Text1 = Title
            //Text2 = Filename
            //0 = Songposition
            //1800 = Songlänge
            //PLPos = Playlist Position
            //20 = Playlist Einträge
            BASS_WINAMPVIS_SetChanInfo VisChan, Text1, Text2, 0, 1800, PLPos, 20
            //Aktuell gesetze Playlist Position erfragen
            lblPos = Winamp_GetPlaylistPos

            //Timer einschalten
            If m_lId = 0 Then
                m_lId = timeSetEvent(HScroll4.Value, 300, AddressOf TimerProc, TimerhWnd, TIME_PERIODIC)
            End If
            //Plugin Windowhandle erfragen und zuweisen
            Label6.Caption = BASS_WINAMPVIS_GetVisHwnd
            
            //Wenn mehr als 0 Window Handle an MagneticWindow übergeben
            If Label6.Caption > vbNullString Then
                oMagneticWindow.AddWindow CLng(Label6.Caption), Me.hwnd
            End If
            
            Timer1.Enabled = True
            
        End If
Nach übergabe von CreateVis wird die function im Plugin nicht vollständig abgearbeitet
was bedeutet es findet schon die abfrage nach dem hwndWinamp statt welches
bis da noch nicht ermittelt wurde.

Ist Delphi so langsam ? oder wo liegt das Problem.

Delphi-Quellcode:
  WinAtom := Windows.RegisterClassEx(wClass);

  if WinAtom <> 0 then
    Result := CreateWindowEx(0, AppClass, AppTitle,
      WS_POPUP, // Kein Frame, Unsichtbar
      0, 0, 275, 116, // x, y, width, height
      {parent} 0, 0, hInst, nil)
  else
    Result := 0;


  // Hwnd von der ausführenden Anwendung
  if AppParentHandle <> 0 then
  begin
    AmpHandle := 0;
    VisPlgHandle := Result;

    repeat
       amphandle := BASS_WINAMPVIS_GetAmpHwnd;
    until amphandle <> 0;
Sobald das Window erstellt wurde ist das amphandle bekannt
Wird aber wie schon beschrieben vorher abgefragt..
Das kann es doch nicht sein.

WIe reglet man das in Delphi das die Reihenfolge abgearbeitet wird und nicht alles auf einmal.

gruß
da
  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 03:45 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