| Autor |
Beitrag |
DelphiNoob
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Do 06.02.03 19:21
Hi,
ich hatte da eine Idee, und nun wollte ich mal fragen ob dies umsetzbar ist.
Ich bastel momentan an einem Login und einem Clientprogramm. Aber ich will nicht alles in eine EXE packen weil es meiner ansicht nach zu groß wird. Aber für Login und Client will ich auch nicht einzeln eine EXE erstellen.
Daher dachte ich mir:
Mach ich doch ne start.exe die als Grundgerüst für ALLES dient. Beim start der EXE wird einfach aus der Login.dll der Form geladen bzw die Prozeduren und alles. Wenn man dann eingeloggt ist wird das geschlossen, die DLL aus dem speicher geschmissen ( oder auch nicht ) und die Client.dll wird geladen. Daraus dann der Form / bzw die Forms für den Client geladen.
Ist so etwas möglich? Bzw wenn nicht mit DLLs dann vieleicht auf eine andere art und weise? Es sieht halt dumm aus wenn ein Programm irgendwie aus 5 EXE'n besteht - meiner Meinung.
Hoffe auf Ideen und Hilfe!
Mfg
DelphiNoob
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 06.02.03 20:21
Klar prinzipiell geht es. Nur macht es für mich keinen Sinn:
Kleine.exe + eine.dll + zweite.dll = große.exe ohne dll's.
Da das Ergebnis = null ist, würde ich sagen der Aufwand lohnt sich nicht.
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Do 06.02.03 20:28
Jein, ich versteh was du meinst, und kann dir auch folgen, aber ich denke die Auslastung ist doch geringer?
Wenn immer nur EXE + 1 DLL geladen sind. Und nicht RIESEN EXE.
Verstehste was ich meine? Wo liegt denn sonst der sinn DLLs in der Form zu betreiben? Der Übersicht halber?
Vieleicht kennst du ja eine andere (bessere?!) Methode! Ich bin für alles offen. Des weiteren frage ich mich gerade, ob es möglich ist Standart Komponenten die mit in die EXE Kompiliert werden raus zu lassen? Vieleicht brauche ich manche Teile ja garnicht, und das macht die EXE nur groß?
Mfg
DelphiNoob
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 06.02.03 20:35
| Zitat: |
aber ich denke die Auslastung ist doch geringer?
Wenn immer nur EXE + 1 DLL geladen sind. Und nicht RIESEN EXE.
|
Warum sollte die Auslastung geringer sein? Ob ich nun einen großen Backstein in den Kofferraum schmeiße oder zwei kleine, das Ergebnis ist das gleiche.
Der Sinn von DLL's ist der das man Code in die selbigen reinpackt, der von mehreren Programmen genutzt wird.
Beispiel:
Du kennst doch diese Öffnen- / Speichern-Dialoge? Diese befinden sich auch in einer DLL aus der sie von jedem Programm aufgerufen werden (können). So spart man sich das immer selber programmieren zu müssen.
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Do 06.02.03 20:43
Das heisst wenn ich Vorgänge benutze die mehrere EXEn verinnerlichen, dann wäre eine DLL besser... hmm...
Wenn ich nen bissel was umstrukturiere kann ich mir das doch zu nutze machen.
Und zu den Backsteinen:
Ich finde ne Minderung ist doch da?
Riesen Exe = Exe + 1 Dll + 1 Dll
Wenn ich aber immer nur ne EXE + 1 DLL lade ist es doch eine dll weniger. Somit spart das doch oder?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 06.02.03 20:50
Also bei mir ist 3 = 1+1+1. Also die linke Seite ist genauso groß, wie die rechte. Wo siehst du da jetzt die Ersparnis? Im Gegenteil, Windows muß die DLL's ja auch laden und somit steigt der Verwaltungsaufwand.
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Do 06.02.03 21:01
Ich denke, DN meint es so, dass eben beim dynamischen Laden der Speicherplatz im Arbeitsspeicher nur zeitweise verbraucht wird. ist doch so, oder?
Ich denke, das halt hat zwei Seiten, einmal dauerts halt länger (Prog wird langsamer), zweitens isses halt auchn Aufwand das richtig zu verwalten....
Aber ne Möglichkeit isses bestimmt. Aber ich denke, der größte Vorteil ist für ein Komplett-Update, wenn man einfach auf Byte-Patches verzichten will und nur komplette DOwnloads anbietet.
Gruß
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Do 06.02.03 21:06
@ UGrohne
Jap so meine ich das
@ Luckie
3 = 1+1+1, stimmt, haste fein gemacht *g*.
Aber:
wenn ich:
Eine EXE habe, und 2 Dlls, und ich lade immer nur EINE dll, und die EXE, dann habe ich 2.
2 = Exe + Dll ( 1 + 1 ). Und Zahl Nr. 3 wäre die andere dll, die nicht geladen wird.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 06.02.03 21:09
Du willst also ständig die DLL's laden und entladen?
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Do 06.02.03 21:19
"Ständig" wäre so alle 45 Minuten.
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Fr 07.02.03 18:23
| Luckie hat folgendes geschrieben: | | Kleine.exe + eine.dll + zweite.dll = große.exe ohne dll's. |
Diese Rechnung ist falsch! Und das aus folgendem Grund:
Die Kleine.exe enthält die VCL und RTL (ca. 300-400kb je nach Nutzung) + eigenen Code. (geschätzt 50kb)
Die eine.dll enthält die VCL und RTL (ca. 300-400kb) + eigenen Code (geschätzt 50kb)
Die zweite.dll enthält die VCL und RTL (ca. 300-400kb) + eigenen Code (geschätzt 50kb)
Das ganze steht dann gegen:
Die große.exe enthält VCL und RTL (300-400kb) + eigenen Code (geschätzt 3*50 = 150 kb)
Das nun ausgerechnet:
Kleine.exe + eine.dll + zweite.dll = große.exe ohne dll's
350kb + 350kb + 350kb <> 450kb
Und man muss ja nicht alle Formulare am Anfang erzeugen und dauerhaft im Speicher behalten. So kann das Login-Forumlar nach dem Schließen mit .Free aus dem Speicher genommen werden.
Das ist alle Male speicherschondender als die VCL und RTL 2x im Speicher zu halten.
_________________ Ist Zeit wirklich Geld?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 07.02.03 18:28
Na dann wird es ja noch schlimmer.
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Fr 07.02.03 18:33
@ AndyB
Ok, überzeugt, klingt einleuchtend!
|
|