![]() |
Unit Aufspalten
Ich möchte meine Unit Aufspalten und zwar geordnet.
Beispiel. Eine Unit nur für das IAudioEndpointVolume
Delphi-Quellcode:
Das Problem dabei ist das aus diesem Interface auf ein anderes verzweigt wird.
IAudioEndpointVolume = interface(IUnknown)
['{5CDF2C82-841E-4546-9722-0CF74078229A}'] function RegisterControlChangeNotify(pNotify: IAudioEndpointVolumeCallback): HRESULT; stdcall; function UnregisterControlChangeNotify(pNotify: IAudioEndpointVolumeCallback): HRESULT; stdcall; function GetChannelCount(var pnChannelCount: UINT): HRESULT; stdcall; function SetMasterVolumeLevel(fLevelDB: Single; pguidEventContext: PGuid): HRESULT; stdcall; function SetMasterVolumeLevelScalar(fLevel: Single; pguidEventContext: PGuid): HRESULT; stdcall; function GetMasterVolumeLevel(var pfLevelDB: Single): HRESULT; stdcall; function GetMasterVolumeLevelScalar(var pfLevel: Single): HRESULT; stdcall; function SetChannelVolumeLevel(nChannel: UINT; fLevelDB: Single; pguidEventContext: PGuid): HRESULT; stdcall; function SetChannelVolumeLevelScalar(nChannel: UINT; fLevel:Single; pguidEventContext: PGuid): HRESULT; stdcall; function GetChannelVolumeLevel(nChannel: UINT; fLevelDB: Single): HRESULT; stdcall; function GetChannelVolumeLevelScalar(nChannel: UINT; var fLevel: Single): HRESULT; stdcall; function SetMute(bMute: BOOL; pguidEventContext: PGuid): HRESULT; stdcall; function GetMute(var pbMute: BOOL): HRESULT; stdcall; function GetVolumeStepInfo(var pnStep: UINT; var pnStepCount: UINT): HRESULT; stdcall; function VolumeStepUp(pguidEventContext: PGuid): HRESULT; stdcall; function VolumeStepDown(pguidEventContext: PGuid): HRESULT; stdcall; function QueryHardwareSupport(var pdwHardwareSupportMask: UINT): HRESULT; stdcall; function GetVolumeRange(var pflVolumeMindB: Single; var pflVolumeMaxdB: Single; var pflVolumeIncrementdB: Single): HRESULT; stdcall; end; IAudioEndpointVolumeCallback Das bedeutet ich muss dieses Interface ebenfalls in die gleiche Unit Packen was ich aber eigentlich nicht will. Aber leider gibt es in Delphi 2010 so etwas wie Namespace nicht. Wie könnte man das trotzdem verwirklichen. Also so etwas namespace AudioVolume.Interfaces ? Es muss nicht exakt das gleiche sein aber eine Abwandlung dafür vielleicht? gruss |
AW: Unit Aufspalten
Es müsste reichen vor deinem Interface das andere mit
IAudioEndpointVolumeCallback = interface zu deklarieren (wie bei klassen). Wobei man das Aufspalten nicht übertreiben sollte. IAudioEndpointVolumeCallback und IAudioEndpointVolume haben wohl eine sehr hohe Logische beziehung zueinander. Dann würde ich diese beiden in einer Unit lassen. |
AW: Unit Aufspalten
Ok zur zeit steht alles in einer Unit mir ist das nach dem ich öfters mit C++ arbeite alles so unsauber.
Kein Ordnung. Der Überblick fehlt halt. Hmm.. Bei manchen Dingen findet man den richtigen Bezug kaum noch. EDIT: Das wäre für mich geordnet. Als Beispiel halt. ;)
Code:
Und alle anderen Interface hätten dann den Namespace AudioVolume.Interfaces
using System;
using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace AudioVolume.Interfaces { [Guid("C02216F6-8C67-4B5B-9D00-D008E73E0064"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] internal interface IAudioMeterInformation { [PreserveSig] int GetPeakValue(out float pfPeak); [PreserveSig] int GetMeteringChannelCount(out int pnChannelCount); [PreserveSig] int GetChannelsPeakValues( int u32ChannelCount,[In] IntPtr afPeakValues); [PreserveSig] int QueryHardwareSupport( out int pdwHardwareSupportMask); }; } Ja geht in Delphi nicht aber wäre angenehmer. EDIT 2 Geht vielleicht so was?
Delphi-Quellcode:
IAudioEndpointVolume = interface(IUnknown, IAudioVolumeInterface);
Nur wie verzweige ich dann auf die anderen Units. Muss Denken.. :) gruss |
AW: Unit Aufspalten
Zitat:
Bei uns wären das z.B. zwei Units: Common.Interfaces.Hardware.AudioEndpointVolume.pas Common.Interfaces.Hardware.AudioEndpointVolumeCall back.pas Und die erste hätte die zweite in der Uses Klausel drin. |
AW: Unit Aufspalten
Zitat:
Ob das dann die bessere Alternative ist. Da hab ich wieder was angefangen. Glaube das wird nichts. Nun ist halt Delphi. gruss |
AW: Unit Aufspalten
Zitat:
Und wenn du wirklich einmal nicht um eine Kreuzreferenz herumkommst, packst du die beteiligten Typen eben wirklich in eine Unit. Eigentlich™ sollte sich das aber fast immer vermeiden lassen. |
AW: Unit Aufspalten
Ok ;)
Werde mich mal drangeben mehr als das ganze wieder zu verwerfen kann eh nicht passieren. Danke. gruss |
AW: Unit Aufspalten
Kann es sein das es schon eine Unit MMDevice im Suchpfad von Delphi gibt?
Die Komponente kompiliert sich und lässt sich ohne Problem Installieren. Beim Start der Anwendung jedoch motzt der Compiler rum MMDevice.dcu nicht gefunden oder Constants.dcu nicht gefunden. Sind aber beide vorhanden. oh.. habe vergessen das Delphi selber nicht rekursive suchen kann.. LOL gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:55 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