AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Prozeduren aus einer Unit in anderen Programme benutzen
Thema durchsuchen
Ansicht
Themen-Optionen

Prozeduren aus einer Unit in anderen Programme benutzen

Ein Thema von mr47 · begonnen am 26. Dez 2004 · letzter Beitrag vom 26. Dez 2004
Antwort Antwort
Benutzerbild von mr47
mr47

Registriert seit: 6. Dez 2004
Ort: Stuttgart
644 Beiträge
 
Delphi 2005 Personal
 
#1

Prozeduren aus einer Unit in anderen Programme benutzen

  Alt 26. Dez 2004, 00:05
Hi Leute!

{ --Zusatzinfo
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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,DxHelp;
Wenn ich aber jetzt eine Prozedur aus dieser Unit in einem anderen Programm verwenden will kommt immer
[delphi] Unclearedidentifer: "HInitDGfx".

Was mach ich falsch????

Thx für euere Hilfe....
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#2

Re: Prozeduren aus einer Unit in anderen Programme benutzen

  Alt 26. Dez 2004, 00:17
Hallo mr47,
sind die Funktionen, Proceduren auch Public, also öffentlich zugänglich?

eine Unit für zwei funktionen erstellen

bye
Claus
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von mr47
mr47

Registriert seit: 6. Dez 2004
Ort: Stuttgart
644 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Prozeduren aus einer Unit in anderen Programme benutzen

  Alt 26. Dez 2004, 11:07
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:
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.
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!

Danke für eure antworten...
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#4

Re: Prozeduren aus einer Unit in anderen Programme benutzen

  Alt 26. Dez 2004, 11:30
Hallo mr47,
Delphi-Quellcode:
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;
Du hast die Unit Windows vergessen anzugeben, denn da ist die Variable hwnd deklariert.
bye
Claus
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von mr47
mr47

Registriert seit: 6. Dez 2004
Ort: Stuttgart
644 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Prozeduren aus einer Unit in anderen Programme benutzen

  Alt 26. Dez 2004, 12:35
Vielen Dank Duffy ! jetzt funzts!!

  Mit Zitat antworten Zitat
Antwort Antwort


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 11:22 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