![]() |
Proxies.dcu-Problem
Hi,
ich habe gerade die mdControls neuzuinstallieren. Dabei ergab sich das Problem, dass die Proxies-Unit nicht gefunden wurde (nur bei der Run-Time). Ich habe mir den Tipp in der Library bereits durchgelesen, verstehe aber nicht, was ich machen muss, damit ich nun die Kompo nutzen kann? Chris |
Na Du kennst die Suche doch inzwischen, oder :mrgreen:
![]() |
Moin Sakura,
Zitat:
|
SORRY :oops: SORRY
Du musst zwei Komponenten-Sammlungen anlegen. Eine für die Delphi-IDE (Design-Time) und eine für die EXE (Run-Time) zur Kompilation. Die Design-Time-Editoren, welche durch Delphi definiert werden, dürfen lt. Lizenz nicht ausserhalb der IDE eingesetzt werden. Um Missbrauch vorzubeugen hat Borland seit D6 diese auch forciert. Deshalb musst Du das Komponenten-Package welches Du jetzt hast in zwei aufteilen. Für eines stellst Du im Projekt-Manager Run-Time Only ein und für eines Design-Time Only. Letzterem fügst Du noch die DCP DesignIDE hinzu. Anschließend musst Du im Run-Time Package alle Aufrufe zu den Methoden aus den Units DesignIntf und DesignEditors entfernen. Unter Umständen musst Du die Registrierung dieser Komponenten neu schreiben. |
Hä??? Wat???
Bitte noch einmal langsam... Erkläre mir das bitte etwas genauer, da ich immer noch nicht ganz verstanden habe, was du meinst... Chris |
*heul* Und wieder läuft nichts. Naja, jetzt habe ich zwei Packages: Eines mit Einstellungen "Designtime only" das andere mit "Runtime only". Ersteres hat das Package DesignIDE.dcp drin; das zweite nicht.
Wie mache ich jedoch jetzt dem Compiler das alles klar, denn er meint, die Proxies.dcu gibt es immer noch nicht... Hat jemand da Hilfe? Chris PS: Denn eigentlich würde ich gerne das Programm ohne RTLs weitergeben... PPS: Das hat mal problemlos geklappt: Install gedrückt; DsgnIntf ersetzt fertig. Keine RTLs nix... *help* |
Hallo,
ich kann Dir nur posten, was ich durch meine 1. Komponente gelernt habe: Seit Delphi 6 müssen Komponenten in ein Design- und Runtime-Package aufgeteilt werden,wenn sie Property-Editoren enthalten (aus lizenzrechtlichen Gründen, wegen der Designtime Editoren). Ich verwende einen FileOpenDialog für ein Logfile. Frei nach Jeff Overcash (TeamB): ![]() Das Designtime-Package (also FlappErrorReg) sollte folgendes Beinhalten: 1. Die Registrier-Anweisungen 2. alle Property Editioren 3. alle Komponenten Editoren 4. DesignIDE und alle RuntimePackages die die Komponente selbst benötigt Das Runtime-Package (FlappError) sollte folgendes Beinhalten: 1. die Komponente selbst 2. Optional, alle Forms die die Editoren benützen können WENN die Komponente diese zur Laufzeit SELBST aufrufen kann.
Delphi-Quellcode:
package flappErr;
{$R *.res} {$R 'FlappError.dcr'} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO ON} {$SAFEDIVIDE OFF} {$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} {$DESCRIPTION 'Armin''s FlappException Component (c) Armin P'} {$DESIGNONLY} {$IMPLICITBUILD OFF} REQUIRES rtl, designide, vcl, vclactnband, vclx, DJCL70, SMCmpntD7, indy; CONTAINS FlappError IN 'FlappError.pas', // Die Komponente FlappErrorReg IN 'FlappErrorReg.pas', // Designtime Package FlappErrorDlg IN 'FlappErrorDlg.pas' {fFlappErrorDlg}, // graphischer Teil der Kompo Flapp_Utils IN 'Flapp_Utils.pas'; END.
Delphi-Quellcode:
UNIT FlappErrorReg;
{$include Compilers.inc} INTERFACE USES {$IFDEF DELPHI_6_UP} DesignIntf, DesignEditors, {$ELSE} dsgnintf, {$ENDIF} FlappError; TYPE TLogFileNameProperty = CLASS(TPropertyEditor) FUNCTION AllEqual: boolean; OVERRIDE; PROCEDURE Edit; OVERRIDE; FUNCTION GetAttributes: TPropertyAttributes; OVERRIDE; FUNCTION GetValue: STRING; OVERRIDE; PROCEDURE SetValue(CONST Value: STRING); OVERRIDE; END; PROCEDURE Register; IMPLEMENTATION USES SysUtils, Forms, Dialogs, Classes; PROCEDURE Register; BEGIN RegisterPropertyEditor(TypeInfo(STRING), TFlappError, 'LogFileName', TLogFileNameProperty); RegisterComponents('APP', [TFlappError]); END; FUNCTION TLogFileNameProperty.AllEqual: boolean; VAR FirstVal : STRING; i : Integer; BEGIN FirstVal := GetStrValue; Result := True; i := 1; WHILE Result AND (i < PropCount) DO BEGIN Result := Result AND (GetStrValueAt(i) = FirstVal); Inc(i); END; END; PROCEDURE TLogFileNameProperty.Edit; VAR Dlg : TOpenDialog; BEGIN Dlg := TOpenDialog.Create(Application); TRY WITH Dlg DO BEGIN Dlg.Filter := 'Logfile (*.log)|*.log|Textfile (*.txt)|*.txt|all Files|*.*'; Dlg.DefaultExt := '*.log'; Title := 'File for ' + TComponent(GetComponent(0)).Name; FileName := Value; IF Execute THEN Value := FileName; END; FINALLY FreeAndNil(Dlg); END END; FUNCTION TLogFileNameProperty.GetAttributes: TPropertyAttributes; BEGIN Result := [paDialog] END; FUNCTION TLogFileNameProperty.GetValue: STRING; BEGIN Result := GetStrValue; END; PROCEDURE TLogFileNameProperty.SetValue(CONST Value: STRING); BEGIN SetStrValue(Value); END; END.
Delphi-Quellcode:
Falls Dir das obige zu konfus erscheint, kann ich folgende Links empfehlen (dort gibt es auch Beispiele zum saugen):
UNIT FlappError;
{$INCLUDE Compilers.inc} INTERFACE USES ... ... TFlappError = CLASS(TComponent) // Hauptklasse FlappError PUBLIC FOptions: TOptions; CONSTRUCTOR Create(Owner: TComponent); OVERRIDE; DESTRUCTOR Destroy; OVERRIDE; PRIVATE FActive: Boolean; FEmailOptions: TEmailOptions; FLogFileOptions: TLogFileOptions; FFileName: STRING; ... PROPERTY LogFileName: STRING READ FFileName WRITE FFileName; // Hier ist der Property-Editor aktiv ... ... END. ![]() Creating Custom Delphi Components, Part I ![]() Creating Custom Delphi Components, Part II ![]() Creating Custom Delphi Components, Part III lG Armin |
Hallo, ich verzweifle auch noch bald an der Datei dsgnintf. ich habe sie schon durch die zwei neuen Units ersetz, aber nun findet der Compiler die Proxies.dcu nicht!! Das ist ja echt wahnsin dass das alles so kompliziert ist...! Ich möchte ja nicht mal ein Package erstellen oder installieren, sondern einfach nur mein Projekt öffnen (TSMS) welches ich mit downgeloadet habe! Da ist aber gar kein Package dabei...! Nur Lauter PAS Dateien, also quellcode! Wie soll ich das denn machen??
|
Willst du Komponenten installieren, oder was?
|
ne eigendlich nicht, ich wollte nur das Projekt, das damit erstellt wurde kompilieren, diese benötigt eben die Units. Installieren wollte ich das nicht!
|
Re: Proxies.dcu-Problem
Ich hab auch das Problem mit Proxies.dcu, was bringts denn zwei packages zu machen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 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