![]() |
Prozeduren aus einer Unit in anderen Programme benutzen
Hi Leute!
{ --Zusatzinfo :-D Ich hab zwar danach gesucht aber auf die schnelle nix gefunden! Wenns irgendwo ein Thema mit diesem Problem schon gibt, dann schlagt mich zusammen und sendet mir (falls ich noch ganz bin) bitte den Link! -- } Also mein Prob: Ich hab eine Unit geschrieben in der einige Prozeduren enthalten sind. So jetzt will ich die aus einem anderen Programm auch benutzen. Die Unit wurde in ...\...\Delphi7\Lib gespeichert!! Also schreibe ich in den "Programmkopf" zu den gazen Punkten von Uses auch den Namen der Unit dazu:
Delphi-Quellcode:
Wenn ich aber jetzt eine Prozedur aus dieser Unit in einem anderen Programm verwenden will kommt immer
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,DxHelp; [delphi] Unclearedidentifer: "HInitDGfx". Was mach ich falsch???? Thx für euere Hilfe.... |
Re: Prozeduren aus einer Unit in anderen Programme benutzen
Hallo mr47,
sind die Funktionen, Proceduren auch Public, also öffentlich zugänglich? ![]() bye Claus |
Re: Prozeduren aus einer Unit in anderen Programme benutzen
Also. Ich hab jetzt folgendes herausgefunden:
@: Duffy: Nein das hab ich erst vergessen. Als ich das Ausprobieren wollte ist mir aufgefallen dass ich die Proceduren in eine Unit von einem Programm geschrieben hab! Als ich das gemerkt hab, hab ich sie dann in ne Unit reinkopiert (also ohne TForm usw.). Aber da passiert immer folgendes: Also erst mal der Code: (hat was mit DirectX-Programmierung zu tun, und Die Funktion stand so im Buch (Aber eben NUR die Funktion !)):
Delphi-Quellcode:
Eigentlich lässt sich die Unit jetzt sogar kompilieren. Aber wenn ich von ner anderen Unit drauf zu greifen will, sagt er immer dass der Begriff hwnd; (aus der ersten Zeile) nicht geklärt ist! Was ist da jetzt noch falsch? Man kann die Unit alleine kompilieren!
unit dxHelpUnit;
interface function DHInitDGfx(_handle: hwnd; _fullscreen: boolean; _width,_height, _bits: longint; _Hal: Boolean; out _IDirect3D9: IDirect3D9; out _IDirect3DDevice9 : IDirect3DDevice9) :boolean; uses d3d9; implementation function DHInitDGfx(_handle: hwnd; _fullscreen: boolean; _width,_height, _bits: longint; _Hal: Boolean; out _IDirect3D9: IDirect3D9; out _IDirect3DDevice9 : IDirect3DDevice9) :boolean; var d3dpp :TD3DPresent_Parameters; d3ddm :TD3DDisplayMode; dtype :Td3DDevType; D3DCaps9 :Td3DCaps9; hardWareVertexProcessing: Boolean; VertexProcessing: Integer; begin Result:=false; _IDirect3D9 := Direct3DCreate9(D3D_SDK_Version); if (_IDirect3D9 = nil) then exit; Fillchar(d3dpp, sizeOf(d3dpp),0); with d3dpp do begin Windowed:= not _fullscreen; SwapEffect:= D3DSwapEffect_DisCard; if (_fullscreen) then begin BackBufferWidth:= _width; BackBufferHeight:= _height; case _bits of 16: BackbufferFormat:= D3DFMT_R5G6B5; 32: BackBufferFormat:= D3Dfmt_A8R8G8B8; else exit; end; end else begin if failed(_IDirect3d9.GetAdapterDisplayMode(D3DAdapter_Default,d3ddm)) then exit; BackBufferFormat:= d3ddm.format; end; end; _IDirect3d9.GetDeviceCaps(D3DAdapter_Default , d3dDevType_Hal , D3dCaps9); hardWareVertexProcessing := D3DCaps9.DevCaps and D3DDEvCaps_HWTransformandLight<>0; if hardWareVertexProcessing then vertexProcessing := D3DCreate_Hardware_VertexProcessing else VertexProcessing := D3DCreate_Software_VertexProcessing; if _hal then dType:= D3DDevType_Hal else dType := D3DDevType_Ref; if failed(_IDirect3d9.CreateDevice(D3DAdapter_Default, dType,_handle,vertexProcessing, d3dpp,_IDirect3dDevice9)) then begin exit; end; Result:=true; end; procedure DHCloseDGFX(_IDirect3D9: IDirect3D9; _IDirect3DDevice9:IDirect3DDevice9); begin _IDirect3DDevice9 := nil; _IDirect3D9 := nil; end; end. Danke für eure antworten... :( |
Re: Prozeduren aus einer Unit in anderen Programme benutzen
Hallo mr47,
Delphi-Quellcode:
Du hast die Unit Windows vergessen anzugeben, denn da ist die Variable hwnd deklariert.
unit dxHelpUnit;
interface uses d3d9, Windows; // <== Hier fehlte die Unit Windows function DHInitDGfx(_handle: hwnd; _fullscreen: boolean; _width,_height, _bits: longint; _Hal: Boolean; out _IDirect3D9: IDirect3D9; out _IDirect3DDevice9 : IDirect3DDevice9) :boolean; implementation function DHInitDGfx(_handle: hwnd; _fullscreen: boolean; _width,_height, _bits: longint; _Hal: Boolean; out _IDirect3D9: IDirect3D9; out _IDirect3DDevice9 : IDirect3DDevice9) :boolean; var d3dpp :TD3DPresent_Parameters; d3ddm :TD3DDisplayMode; dtype :Td3DDevType; D3DCaps9 :Td3DCaps9; hardWareVertexProcessing: Boolean; VertexProcessing: Integer; begin ... end; bye Claus |
Re: Prozeduren aus einer Unit in anderen Programme benutzen
Vielen Dank Duffy ! jetzt funzts!!
:-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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