Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Porjektmappe übersichtlicher machen (https://www.delphipraxis.net/114348-porjektmappe-uebersichtlicher-machen.html)

k4ni 23. Mai 2008 19:53


Porjektmappe übersichtlicher machen
 
Hallo,

Ich benütze delphi7 und komme hin und wieder durcheinander mit meinem code wenn er 1000 oder mehr zeilen lang ist.
Also hab ich mir gedacht, das ich manche functionen oder proceduren in einer anderen unit ableg.

Delphi-Quellcode:
procedure TForm1.printf(text: string);
begin
Status.Lines.Add(text);
end;
So ich will diese procedure jetzt z.B in eine andere unit packen aber trotzdem wie gewöhnt mit der Main-unit zugreifen.
Also ohne irgendwie UnitName.printf(..).

Ist das möglich, wenn ja, wie?

Apollonius 23. Mai 2008 19:59

Re: Porjektmappe übersichtlicher machen
 
Das geht bei Methoden natürlich nicht, da die Klassendefinition nicht gestreut werden darf (in Delphi gibt es keine "partial classes").

mkinzler 23. Mai 2008 20:01

Re: Porjektmappe übersichtlicher machen
 
Du könntest sie höchstens in externe Dateien legen, welche du dann inkludierst

k4ni 23. Mai 2008 20:09

Re: Porjektmappe übersichtlicher machen
 
Zitat:

Zitat von mkinzler
Du könntest sie höchstens in externe Dateien legen, welche du dann inkludierst

So hab ich mir das auch gedacht, also eine datei namens Unit2.pas beinhaltet z.B. nur das:
Delphi-Quellcode:
procedure SendAll(packet: TPacket; size: integer);
var
  i: integer;
begin
for i:=1 to iplayers-1 do
  begin
    if players[i].online then
      players[i].connection.Socket.Send(packet, size);
  end;
end;
Und diese datei dann irgendwie so:
Code:
implementation
include('Unit2.pas');
inkludieren. So das delphi denkt, das der TEXT der in der Unit2.pas ist in der Unit1.pas ist (also dort wo ich es inkludiere)

Matze 23. Mai 2008 20:12

Re: Porjektmappe übersichtlicher machen
 
Hallo,

das geht so:

Delphi-Quellcode:
unit Unit2;

interface

function blubb(a: Integer): Integer;

implementation

function blubb(a: Integer): Integer;
begin
  Result := a;
end;

end.
Einbinden geht nach wie vor über die uses-Klausel:

Delphi-Quellcode:
// ...
implementation

{$R *.dfm}

uses Unit2;
// ...

Var := blubb(1);
Grüße

mkinzler 23. Mai 2008 20:16

Re: Porjektmappe übersichtlicher machen
 
Ich würde die Datei nicht die Endung .pas sonder .I, .inc o.ä. geben

Delphi-Quellcode:
{$i bla.inc}

k4ni 23. Mai 2008 20:23

Re: Porjektmappe übersichtlicher machen
 
Danke euch beiden!
Hab mich aber für Matze's version entschieden. Danke :)
Und was für eine sinnvolle function :D

Matze 23. Mai 2008 20:29

Re: Porjektmappe übersichtlicher machen
 
Zitat:

Zitat von k4ni
Und was für eine sinnvolle function :D

Hehe jo. Kannst du 1:1 übernehmen, die funktioniert. *g*

Spaß beiseite: Was besseres ist mir auf die Schnelle nicht eingefallen. ;)

Prototypjack 23. Mai 2008 21:19

Re: Porjektmappe übersichtlicher machen
 
Moin,

Vorsicht:
mkinzler und Matze reden von verschiedenen Sachen! Das was du in deinem Beispiel gebracht hast...

Delphi-Quellcode:
procedure TForm1.printf(text: string);
begin
Status.Lines.Add(text);
end;
...ist ganz klar eine Methode! Das zeigt dir das vorangestellt TForm1., diese Methode gehört zu der Klasse (die Form in diesem Fall) und kann nicht gestreut werden, wie bereits erwähnt wurde gibt es ja keine Partial Classes.

Das, was mkinzler vorschlug ({$Include Test.inc}) funktioniert so: Delphi "denkt" sich den Inhalt der Include-Datei direkt in die Unit, als stünde statt der Include-Anweisung direkt der Inhalt der Datei. Da hier keine wirkliche Streuung vorliegt, kannst du das auch mit Methoden machen.

Matzes Vorschlag hingegen lagert lediglich eine Funktion oder eine Prozedur (nicht Methode!) aus, die du dann ansprechen kannst.

Ich hoffe ich konnte den Unterschied einigermaßen klären.

Grüße,
Max


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 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