Autor |
Beitrag |
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Do 06.02.03 18:46
Hallo...
mein Programm umfasst mittlerweile um die 4500 zeilen, und irgendwann stresst es doch ganz gewaltig immer nach irgendwelchen code-schnipseln zu suchen....
was hab ich für möglichkeiten, ausser dll´s, programm-code, der eigentlich nich mehr gebraucht wird, auszulagern.
am liebsten wär mir ne gaaanze einfach lösung, bei der ich einfach eine platzhalter setzt und delphi dementsprechend vor dem kompilieren den code dort einfügt... geht sowas?
mfg
kiwicht
|
|
Jack Falworth
      
Beiträge: 222
Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
|
Verfasst: Do 06.02.03 18:55
Nein außer dlls,
aber du könntest alles was irgendwie initialisiert oder gespeichert wird in Datein lagern. Da spart oft viel code und ist übersichtlicher und einfacher zu benutzen.
MfG
Jack Falworth
_________________ Andere zu kritisieren ist mitunter eine Möglichkeit, sich selbst ins bessere Licht zu setzen.
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Do 06.02.03 19:20
Wie wär's mit Funktionen und Units?
Manchmal ist es sinnvoll, Programmblöcke einfach nur der Übersichtlichkeit wegen in Prozeduren auszulagern, obowhl man sie gar nicht oft braucht. Das ist zwar erst sinnvoll, wenn dieser Programmblock viele Zeilen enthält, aber das dürfte ja wohl gegeben sein (bei 4000 Zeilen findet man doch bestimmt was, was zusammen gehört). Das ist dann zwar nicht der ursprüngliche Einsatzzweck von Prozeduren, nämlich nicht das Abkürzen wiederholt aufzurufender Prozesse, aber als Strukturierungsmittel ist das das einfachste, mit dem wenigsten Aufwand und ohne große Performanceeinbuße.
Einige Prozeduren würde ich dann wieder gruppieren und in Units auslagern. Zum Beispiel einen speicherprozess. Da werden normalerweise Infos gesammelt (aus TMemo o.Ä.), konvertiert (eigene Header davor, eigenes Dateiformat) und dann die Daten in einen File geschrieben. Das sind mehrere Prozeduren, die man in eine Unit machen könnte (zum Beispiel save.pas).
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Do 06.02.03 19:27
also das mit den prozeduren hört sich ja ganz lecker an... hast du dazu ein verständliches (also auf newbies zugeschnittenes) tutorial parat?
auszulagern gibts bei mir jedenfalls genug, allein die initalisierung meine 100 edit-felder oder das auslesen von der registry sind alles sachen, die hab ich einmal geschrieben, muss daran aber nie wieder was änder....
mfg & thx
ps. @ Jack Falworth
das mit den dll´s ist mir schon wieder zu overkill, zumal ich das schonmal probiert hab, und jämmerlich versagt habe... 
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 06.02.03 19:46
kiwicht hat folgendes geschrieben: | also das mit den prozeduren hört sich ja ganz lecker an... hast du dazu ein verständliches (also auf newbies zugeschnittenes) tutorial parat? |
Du weißt nicht, wie man Prozeduren schreibt und nutzt?
btw: Ein Tutorial zum Optimieren von Quellcode (wenn ich das jetzt richtig verstanden habe) wird´s nicht geben, denn das kommt doch sehr auf das Programm und seinen Zweck an.
Mit Tipps, die man dir evtl. gibt, kannst du möglicherweise gar nichts anfangen, usw.
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Do 06.02.03 20:08
wie lange programmierst du denn?
Prozeduren müsste man eigentlich kennen.
Oben in der type-Deklaration der Form schreibst du
Quelltext 1:
| procedure Prozedurname(Parameter); |
Wenn keine Parameter gebraucht werden, einfach weglassen.
Im implementation-Teil kommt dann irgendwo ein
Quelltext 1: 2: 3: 4: 5: 6:
| procedure FormKlasse.Prozedurname(Parameter); begin
// irgendwelcher Code
end; |
Wäre eigentlich das allererste was man lernt, wenn man eine Programmiersprache lernt...
Und wenn man Projekte mit 4000 Zeilen Code in Angriff nimmt, dachte ich bisher immer,daß man genug Wissen hat, zu wissen was eine Prozedur und eine Funktion und eine Unit ist...
Und das hat Mathias ja auch gemeint, nur hab' ich geschrieben, wie's geht *g*
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Do 06.02.03 20:23
 ... da muss ich ja ersma schmunzeln... ist aber verständlich das ihr euch wundert... ich bin seit einem halben jahr dabei.. vielleicht hab ich mich auch n bisschen unpassend ausgedrückt...
also das mit den prozeduren, wie ich die erstelle, klar, das krieg ich hin, ich meinte die frage jetzt eher bezogen auf "auslagern" von prozeduren.... aber trotzdem danke für den hinweis..
mfg
kiwicht
ps:
sieht schon nett aus, wenn jemand n 4000-zeilen progg schreibt, und keine proceduren kennt... ich kann euch gut verstehen...  ....
[/quote]
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Fr 07.02.03 13:15
hi, vielleicht machste das mit {$INCLUDE filename}. Ist zwar nicht so sauber, aber das hört sich bei deinem code eh hoffnungslos an (ich glaube jeder von uns hat schonmal hoffnungslosen code geschrieben).
Also, einfach den teil, den du nie wieder brauchst in eine .inc datei tun und mit der directive...{$INCLUDE auslager.inc}...liest der compiler in dieser datei weiter.
Wichtig ist nur, das du ganze blöcke auslagerst, dh. du darfst begin und end nicht trennen. Ferner muss dir klar sein, das er bei compiler-fehlern die stelle in dieser datei nicht anzeigt.
viel spass
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Fr 07.02.03 22:40
kann auch nur auf units und procedure's verweisen...
ich mach auf jeden Fall, wenn der Quelltext ziemlich lang ist für alles was zusammengehört und einigermaßen lang ist eine eigene unit...
mit Proceduren auslagern ist gemeint, dass du Code der in einer anderen Procedure steht, und der zusammengehört in eine neue Procedure geschrieben wird und in der aktuellen Procedure (wos vorher drin war) nur die procedure aufgerufen wird...
dadurch wird der Wuelltext pro Procedure verringert und alles wird übersichtlicher...
des weiteren mache ich es zum Beispiel immer so, dass ich zwischen den Prozeduren immer eine Kommerntarzeile mache, di nur aus "-" oder "#" besteht...
dadurch werden die Proceduren auch optisch voneinander abgegrenzt, denn bei mir sind Comments gelb...
Fiji-Fighter
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 10.02.03 13:06
jepp.. danke für die tips...
das mit den INCLUDE, das meint ich, mir isses da erstmal auch wurscht.
ob er mir die fehler da dann nicht anzeigt, da es sicht dort hauptsächlich um reine Datenzuweisungen handelt, die einfach nur da sind, aber keine fehler enthalten können....theoretisch
mfg
kiwicht
|
|
foxy
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Mo 10.02.03 13:30
Guden Kiwi
also wenn ich grosse Prjekte habe mach ich das weder mit .dll oder mache das in Units ... das iss dann eigentlich ganz simpel
nur dann wird ab und zu die Uses Liste ganz schön lang 
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Do 13.02.03 09:50
jo, danke, aber ich hab mich gerade mit noch was, wie ich find, besserem angefreundet:
MDI-Forms!  .... da kann ich schön alles Mögliche an Code und Zeugs was zusammengehört, auslagern, und die Teile zur Laufzeit auch mal schliessen, was den Speicher-Verbrauch extrem mindert!
vielen Dank für eure Mühen!
mfg
kiwicht
|
|
hansg
      
Beiträge: 168
Win XP Professional SP3, Vista Ultimate 32 SP1
Delphi 6 Professional
|
Verfasst: Mi 26.02.03 18:41
Hallo,
zu diesem Thema hätte ich eine Frage.
Wenn ich Programmcode auslagern möchte z.B. in Speichern.pas
wie rufe ich diesen in einer Anwendung auf bzw. wie und wo muß man was
deklarieren?
_________________ Gruß Hans
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Mi 26.02.03 19:50
bei uses musst du die andere unit eintragen, bei der die Funktion / Prozedur drinsteht...
und die Funktion muss auch global sein:
du musst sie oben im "Kopf" deklarieren, wo auch immer alles eingetragen wird von den Buttonclick-Procedures...
Wenns nicht klar war, dann frag nochmal nach nem BSP...
|
|
hansg
      
Beiträge: 168
Win XP Professional SP3, Vista Ultimate 32 SP1
Delphi 6 Professional
|
Verfasst: Mi 26.02.03 20:08
Hallo,
danke für das Angebot mit dem BSP, folgendes habe ich nicht verstanden:
Zitat: |
und die Funktion muss auch global sein:
du musst sie oben im "Kopf" deklarieren, wo auch immer alles eingetragen wird von den Buttonclick-Procedures...
|
_________________ Gruß Hans
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mi 26.02.03 20:39
der "Kopf" ist da, wo ganz am Anfang in deinem ProgrammCode ganz oft untereinander Procedure oder Function steht. Das ist der Teil zwischen Uses und Var... guck mal hier im FAQ-Bereich, ich glaub da gabs einiges zum Thema Aufbau und Struktur von QuellCodes...
|
|
hansg
      
Beiträge: 168
Win XP Professional SP3, Vista Ultimate 32 SP1
Delphi 6 Professional
|
Verfasst: Mi 26.02.03 20:50
Hallo,
habe in meinem Hauptformular bei uses den Eintrag speichern hinzugefügt.
In der Unit speichern.pas kommt dann meine Procedure, wo und wie genau muß ich diese deklarieren?
Hier der nackte Quelltext aus meiner Unit (speichern.pas)
Quelltext 1: 2: 3: 4: 5: 6: 7:
| unit speichern;
interface
implementation
end. |
_________________ Gruß Hans
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 26.02.03 23:49
maximus hat folgendes geschrieben: |
Also, einfach den teil, den du nie wieder brauchst in eine .inc datei tun und mit der directive...{$INCLUDE auslager.inc}...liest der compiler in dieser datei weiter.
|
Warum nur Blöcke auslagern, die er nicht mehr braucht? Ich nutze eigentlich Include-Dateien auch für Source, den ich noch brauche.
Zitat: |
Wichtig ist nur, das du ganze blöcke auslagerst, dh. du darfst begin und end nicht trennen.
|
Irgendwie logisch oder?
Zitat: |
Ferner muss dir klar sein, das er bei compiler-fehlern die stelle in dieser datei nicht anzeigt.
|
Und das ist schlicht und ergreifend falsch. Das einzigste, wa snicht geht ist die Quellcode-Vervollständigung, weil in den Include-Dateien keine Units eingebunden werden.
|
|
hansg
      
Beiträge: 168
Win XP Professional SP3, Vista Ultimate 32 SP1
Delphi 6 Professional
|
Verfasst: Do 27.02.03 07:00
An Luckie,
danke für die Info, ich möchte aber wissen wie ich das mit einer pas Datei
machen muß.
Sprich was und wo genau muß ich in der Unit speichern.pas deklarieren?
_________________ Gruß Hans
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Do 27.02.03 09:46
hansg hat folgendes geschrieben: | Sprich was und wo genau muß ich in der Unit speichern.pas deklarieren? |
Schau Dir mal die Antwort von Tommie-lie an. Die sollte es glaube ich erklären!
Gruß
TINO
|
|