AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programmteile in extra Unit auslagern

Ein Thema von padavan · begonnen am 14. Mär 2005 · letzter Beitrag vom 16. Mär 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#11

Re: Programmteile in extra Unit auslagern

  Alt 15. Mär 2005, 07:46
Der Prozedurkopf muss auch im Interface-Teil der Unit stehen:

Delphi-Quellcode:
unit Unit_Sprache;

interface

function Addiere(a,b: Integer): Integer;

implementation


var Variablename: integer;

function Addiere(a,b: Integer): Integer;
begin
  result:=a+b;
end;

end.
Nur was im Interface-Teil drin steht, kann auch von aussen genutzt werden. Alles andere ist nur in der Unit verfügbar.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Programmteile in extra Unit auslagern

  Alt 15. Mär 2005, 07:51
Hai padavan,

hier mal der Code für ein Formular und eine externe Unit (Unit2). Das sollte die depresion verhindern
Delphi-Quellcode:
unit Unit2;

interface
  // Hier werden die Funktionen nach aussen bekannt gemacht
  function AddZahlen (value1, value2 : Real) : Real;
  procedure MacheEtwas (var ergebniss : Real ; value1, value2 : String);

implementation

uses SysUtils;


function AddZahlen (value1,value2 : Real) : Real;
begin
  result := value1 + value2;
end;

procedure MacheEtwas (var ergebniss : Real ; value1, value2 : String);
var
  r1,
  r2 : Real;
begin
  r1 := StrToFloat(value1);
  r2 := StrToFloat(value2);
  ergebniss := r1 + r2;
end;

end.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses
 Unit2; // Unit mit den Funktionen einbinden

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  test1 : Real;
begin
  test1 := AddZahlen(45.2,6.6);
  ShowMessage (FloatToStr (test1));
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  test2 : Real;
begin
  MacheEtwas(test2,'45,2','6,6');
  ShowMessage (FloatToStr (test2));
end;

end.
[Edit]
Jetzt habe ich so schön getippelt und jim_raynor war schneller.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Programmteile in extra Unit auslagern

  Alt 15. Mär 2005, 09:11
He Sharky,

trotzdem war´s nicht umsonst, den ein Delphi-Padavan wie ich ist froh über jede Info....!!!

kennt ihr das: man glaubt man hat es und freut sich wie ein Kind und dann......die Ernüchterung.
Denn: dank eurer Hilfe kann ich jetzt die Procedure in der "externen" Unit ansprechen,
ABER: in dieser Procedure ist es nicht möglich an die Form1 zu gelangen:
Delphi-Quellcode:
procedure test;
var Variable: integer;
begin
  Form1.height := 200; //Beispiel
end;
bei Form1. gibt´s gemecker von Delphi, da er die Form1 nicht kennt.
Nun hab ich versucht die Unit1 bei Uses der externen Unit einzubinden, hat aber nicht geholfen.

Es gab die Meldung, "Unit1.dcu nicht gefunden"
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Programmteile in extra Unit auslagern

  Alt 15. Mär 2005, 09:24
Hai padavan,

trage die Unit1 mal nach implementation in der Unit2 ein.

Delphi-Quellcode:
Unit Unit2;
.
.
implementation
Uses Unit1;
.
.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#15

Re: Programmteile in extra Unit auslagern

  Alt 15. Mär 2005, 11:28
Eine ganz "brutale Methode ist {$INCLUDE ...}

Damit kann man einen Teil der Unit direkt in eine andere Datei auslagern. (damit ist es sogar Möglich Teile, die sonst nicht auslagerbar sind, dennoch auszulagern)
Ich hab da ein Programm, mit einigen hundert Ereignisprozeduren, welche ja so nicht auslagerungsfähig sind - aber damit ging es dennoch und ich hatte auch etwas mehr übersicht.

Und da so der ausgelagerte Teil dennoch Teil der Unit ist, gibt es auch keine Probleme mit Veriablen ...


Delphi-Quellcode:
// Unit1.pas

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{$INCLUDE UnitX.inc}

end.
Delphi-Quellcode:
// UnitX.inc

procedure TForm1.Button1Click(Sender: TObject);
begin
  ...
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ...
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Programmteile in extra Unit auslagern

  Alt 15. Mär 2005, 12:21
Zitat:
trage die Unit1 mal nach implementation in der Unit2 ein.
Daraufhin kam ja die Fehlermeldung ja erst:

Delphi-Quellcode:
unit Unit_Sprache;

interface

procedure Sprachzuweisung1;

implementation
uses Unit1; // Fehler Unit1.dcu nicht gefunden

procedure......
Die Idee von himitsu ist auch interessant werde ich auch mal bei Gelegenheit probieren, allerdings würde ich´s gern erstmal auf "normalem" Wege hinbekommen, da ich die Zusammenhänge noch nicht ganz verinnerlicht habe...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#17

Re: Programmteile in extra Unit auslagern

  Alt 15. Mär 2005, 12:48
Klar, der "normale" Weg ist besser, voallem weil man da ja eine "richtige" Unit erhällt, während bei include nur Teile in 'ner Datei rumliegen
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Programmteile in extra Unit auslagern

  Alt 16. Mär 2005, 06:55
Ach mann, da hab ich mir am Schluss noch selbst ein Ei gelegt, Sharky hatte natürlich recht: Einfach die Unit1 in den Implementation Abschnitt rein und dann funzt´s.

Also nochmal vielen Dank an alle
Padavan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:02 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