Delphi-PRAXiS
Seite 24 von 26   « Erste     14222324 2526      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Träume, Wünsche und Wahnvorstellungen... (https://www.delphipraxis.net/160506-traeume-wuensche-und-wahnvorstellungen.html)

NickelM 4. Jul 2012 03:07

AW: Träume, Wünsche und Wahnvorstellungen...
 
Hm, ich muss zugeben, ich weis jetzt nicht ob es das schon gibt, zumindest bei nicht D2009. Und bei XE2 glaube ich auch nicht. Folgendes :
- #define "Codeabkürzungen". Wie es in C++ gibt. Beispiel wie sowas aussehen würde.

Delphi-Quellcode:
#define Dll_inport = {stdcall external "mydll.dll";} 

procedure SendHalloText; DllImport;
// "DllImport;" wird durch " stdcall external "mydll.dll"; " ersetzt. Dan würde der Code auch manchmal besser ausehen. Aufruf könnte man ja ändern war nur ein Bespiel. :-D
- "Schlauer-Compiler" : Wenn man eine Unit einbindet, und verwendet von ihr nur eine Klasse oder Prozedur erkennt das der Compiler und "packt" nur diese Prozedur in die Exe. Und nicht alle Funktionen, Klassen etc. die man sowieso nicht verwendet. Da würde das Kompilieren länger dauern aber man hätte ne kleinere Exe. Besonders bei VCL wäre das hilfreich. Dan wären VCL-Anwendungen nicht so groß :-D

- Umschalten von Unicode/Ansi, sodass man auch für Win98 noch schreiben kann und sich general den Mist mit Unicode/Ansi sparen kann (Natürlich nur bei 32bit :-D. Obwohl es denk ich kaum jemand noch gibt, der Win98 auf einen "physischen" Rechner hat.

Gru0 NickelM

jaenicke 4. Jul 2012 05:50

AW: Träume, Wünsche und Wahnvorstellungen...
 
Zitat:

Zitat von himitsu (Beitrag 1173375)
Oder wer will es wirklich so schreiben?

Ich, denn wie könnte man die Interfacedeklaration sonst in eine andere Unit schieben? :wink:
Und zumindest mir ist genau das sehr wichtig.

Stevie 4. Jul 2012 08:13

AW: Träume, Wünsche und Wahnvorstellungen...
 
Zitat:

Zitat von NickelM (Beitrag 1173420)
- "Schlauer-Compiler" : Wenn man eine Unit einbindet, und verwendet von ihr nur eine Klasse oder Prozedur erkennt das der Compiler und "packt" nur diese Prozedur in die Exe. Und nicht alle Funktionen, Klassen etc. die man sowieso nicht verwendet. Da würde das Kompilieren länger dauern aber man hätte ne kleinere Exe. Besonders bei VCL wäre das hilfreich. Dan wären VCL-Anwendungen nicht so groß :-D

Gibt's schon, nennt sich Linker und funktioniert schon seit über einer Dekade. 8-)

Teste es selbst: Schreib dir eine Funktion oder eine Klasse und benutze sie nicht in deinem Programm. Kompiliere das Programm (mit Debug Config). Schaue auf die blauen Pünktchen am linken Rand. Keine Pünktchen in den unbenutzten Teilen, weil der Linker das nicht reingepackt hat. Natürlich kann der nur rauswerfen, was wirklich nie benutzt wird, bzw was er feststellen kann. Daher werden z.B. keine öffentlichen Methoden rausgeworfen, weil die über RTTI angesprochen werden können.

himitsu 4. Jul 2012 10:53

AW: Träume, Wünsche und Wahnvorstellungen...
 
Das Problem ist/war, wenn man diese Klasse über den Initialization-Abschnitt initialisiert, dann wird sie immer "verwendet" (in Initialization), selbst wenn sie sonst nirgendwo verwendet wird.

Darum ist die VCL auch so groß, bzw. einige gehn auf NonVCL und verwenden bestimmte Units garnicht, damit die EXE klein wird.

Aber: Es gibt seit einer Weile den
Delphi-Quellcode:
class constructor
, bzw.
Delphi-Quellcode:
class destructor
... wenn alle dort das machen würde, was sie sonst in "Initialization" machen würden, dann würde vieles wirklich nicht mehr eingebunden, wenn es nicht gebraucht wird.

Was da leider noch fehlt, ist, daß man bei Ressourcen nicht differenzieren kann und es wird immer alles in die EXE gelinkt, was irgendwo im Quellcode gefunden wird, selbst wenn z.B. die Klasse garnicht verwendet/eingelinkt wurde, für welche diese Resource (RES) gedacht war. :cry:


@jaenicke: Das Alte/Normale muß natürlich erhalten bleiben, aber wenn ich nur programmintern mehrere Interfaces brauche, dann muß ich auch immer alle Header/Implementationen doppelt schreiben.
In soeinem Fall wäre es eben schön, wenn man sich aus allen public/published-Eigenschaften ein Interface generieren lassen könnte
Delphi-Quellcode:
type
  TMyClass = class interfaced(TInterfaceObject) // dafür markieren, daß automatisch ein Interface generiert werden kann, bzw. es wird sofort generiert und später nur zugewiesen, beim OF
    ...
  end;
  IMyInterface = interface of TMyClass;


  IMyInterface2 = interface of TMyClass2;; // per Forward?
  TMyClass2 = class(TInterfaceObject)
    ...
  end;


  IMyInterface3 = interface of TMyClass3;; // per Forward und manuell
  TMyClass3 = class(TInterfaceObject, IMyInterface3)
    ...
  end;

stahli 24. Sep 2012 23:26

AW: Träume, Wünsche und Wahnvorstellungen...
 
Liste der Anhänge anzeigen (Anzahl: 1)
[FireMonkey]
Die FM-Controls haben eine Eigenschaft "HitTest", mit der man die Controls einfach "mausdurchlässig" machen kann. :thumb:

Auch gibt es die Eigenschaft "EnableDragHighlight", mit der man den automatischen Rahmen bei DragOver abschalten kann (im Bild das innere Panel).
Optisch ist das nicht schlecht, DragOver und DragDrop wird dennoch behandelt.

Bei verschachtelten Controls (z.B. Styles) wäre es schön, wenn man "HitTestDrop" deaktivieren könnte (z.B. für die SubControls).
Dann würde auf DragOver immer das "MainControl" reagieren, aber auf Mouseover und Klicks könnten ggf. auch die Subcontrols reagieren.

Ich würde das für eine sehr nützliche Funktion halten, die eine sehr viel genauere GUI-Gestaltung ermöglichen würde...
[/FireMonkey]

geskill 3. Okt 2012 23:56

AW: Träume, Wünsche und Wahnvorstellungen...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Gerade bisschen verträumt am Programmieren da passiert doch glatt sowas:

Delphi-Quellcode:
FIcon := TIcon.Create.Handle := GetIconHandle;


Erst als der Compiler meckerte habe ich den Fehler gemerkt. jaja :wink:

stahli 12. Mai 2013 10:53

AW: Träume, Wünsche und Wahnvorstellungen...
 
Es wäre schön, wenn die IDE Methoden im Implementationsabschnitt immer in der gleichen Reihenfolge halten würde, wie sie in den Klassendefinitionen im Interfaceabschnitt definiert werden.
Wenn man dort die Reihenfolge ändert sollte dies auch im Quelltext angepasst werden (optional auf Shortcut).

sx2008 28. Mai 2013 10:34

AW: Träume, Wünsche und Wahnvorstellungen...
 
Ich wünsche mir die If-Funktion:
Delphi-Quellcode:
// fiktive Berechnung als Beispiel
Zinssatz := (if premiumkunde then Basiszins*0.9 else Basiszins+0.75) - rabattzins;
Und natürlich gleich noch die Case-Funktion dazu:
Delphi-Quellcode:
ShowMessage('Sie haben '+
  (case idx of 1:'Nichts' 2:'Grass' 3:'Wasser' 4:'Felsen' else 'unbekannt') + 'angeklickt');
Man beachte dass man immer den Else-Teil schreiben muss; andernfalls wäre es ein Fehler.

Der schöne Günther 28. Mai 2013 11:00

AW: Träume, Wünsche und Wahnvorstellungen...
 
Das erste ist doch genau der ternäre Operator aus C!

Code:
zinssatz = (premiumkunde ? Basiszins*0.9 : Basiszins+0.75) - rabattzins:
Ich habe ihn in den ersten Tagen Delphi auch vermisst, mittlerweile bin ich wirklich froh, den nicht mehr sehen zu müssen. Lieber ein, zwei Zeilen mehr. Dafür erkennt man später in der Hälfte der Zeit, was im Code vor sich geht.

knochen 28. Mai 2013 11:00

AW: Träume, Wünsche und Wahnvorstellungen...
 
Zitat:

Zitat von sx2008 (Beitrag 1216691)
Ich wünsche mir die If-Funktion:
Delphi-Quellcode:
// fiktive Berechnung als Beispiel
Zinssatz := (if premiumkunde then Basiszins*0.9 else Basiszins+0.75) - rabattzins;

Gibt's schon. Such mal nach der IfThen-Funktion. Die existiert in überladener Form gleich in mehreren Units.

Zitat:

Zitat von sx2008 (Beitrag 1216691)
Und natürlich gleich noch die Case-Funktion dazu:
Delphi-Quellcode:
ShowMessage('Sie haben '+
  (case idx of 1:'Nichts' 2:'Grass' 3:'Wasser' 4:'Felsen' else 'unbekannt') + 'angeklickt');
Man beachte dass man immer den Else-Teil schreiben muss; andernfalls wäre es ein Fehler.

Auch das kann man leicht selbst schreiben.
Delphi-Quellcode:
function MyCase(idx: Integer; Values: Array of Integer): Integer;
function MyCase(idx: Integer; Values: Array of String): String; overload;
...etc.
Ggf. kann man noch einen Else-Wert übergeben, wenn gewünscht auch als optionalen Parameter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Seite 24 von 26   « Erste     14222324 2526      

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