Autor |
Beitrag |
badstuberl
Hält's aus hier
Beiträge: 11
|
Verfasst: Fr 08.04.11 09:57
hi zusammen. ich habe eine konsolen-app geschrieben, fernab von units und co, sprich:
program xxx;
var ...;
procedure...
function...
begin
procedure x;
procedure y;
...
end.
wie transformiere ich sowas am besten in eine unit? gibt es in units globale variablen? kommen die in den interface-teil oder den implementation-teil? ich tippe ja mal auf letzteres...
wäre schön, wenn mir dort jemand tipps geben könnte!
danke!
|
|
Thom
      
Beiträge: 70
Erhaltene Danke: 5
Delphi 10 Seattle Prof.
|
Verfasst: Fr 08.04.11 10:16
Zuletzt bearbeitet von Thom am Fr 08.04.11 10:21, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 08.04.11 10:18
badstuberl hat folgendes geschrieben : | wie transformiere ich sowas am besten in eine unit? |
Im Grunde einfach kopieren.
badstuberl hat folgendes geschrieben : | gibt es in units globale variablen? |
Theoretisch ja, praktisch ist es aber extrem schlechter Stil diese zu benutzen, wenn es nicht (wie fast immer) anders geht. Das macht das alles nur unübersichtlich, weil du nie weißt wo die Variable überhaupt geschrieben und gelesen wird ohne nachzuschauen.
badstuberl hat folgendes geschrieben : | kommen die in den interface-teil oder den implementation-teil? |
Es geht beides, besser ist soweit möglich in implementation, aber lass es lieber ganz wenn möglich.
Wenn du mehrere zusammenhängende Funktionen hast, die Daten brauchen, die in einer anderen Funktion gesetzt wurden, dann mach daraus besser Objekte. Dann kannst du das sauber als privates Feld speichern.
|
|
badstuberl 
Hält's aus hier
Beiträge: 11
|
Verfasst: Fr 08.04.11 10:37
|
|
badstuberl 
Hält's aus hier
Beiträge: 11
|
Verfasst: Fr 08.04.11 10:42
jaenicke hat folgendes geschrieben : | badstuberl hat folgendes geschrieben : | wie transformiere ich sowas am besten in eine unit? | Im Grunde einfach kopieren.
|
hehe, gut
badstuberl hat folgendes geschrieben : | gibt es in units globale variablen? |
Zitat: | Theoretisch ja, praktisch ist es aber extrem schlechter Stil diese zu benutzen, wenn es nicht (wie fast immer) anders geht. Das macht das alles nur unübersichtlich, weil du nie weißt wo die Variable überhaupt geschrieben und gelesen wird ohne nachzuschauen. |
naja, die unit wird eine atomare einheit und die internen prozeduren sollen gemeinsame, globale variablen haben. die müssen nach außen nicht sichtbar sein. dort sind nur die prozeduren (oder ein teil davon) interessant.
badstuberl hat folgendes geschrieben : | kommen die in den interface-teil oder den implementation-teil? |
Zitat: | Es geht beides, besser ist soweit möglich in implementation, aber lass es lieber ganz wenn möglich. |
hmm. also ich werde es wohl erstmal in implementation probieren.
Zitat: | Wenn du mehrere zusammenhängende Funktionen hast, die Daten brauchen, die in einer anderen Funktion gesetzt wurden, dann mach daraus besser Objekte. Dann kannst du das sauber als privates Feld speichern. |
ja, so sollte man es wohl machen... dir sei auf jeden fall schon mal gedankt! ich mach das alles mal step by step  fange grad erst mit delphi an...
|
|
Thom
      
Beiträge: 70
Erhaltene Danke: 5
Delphi 10 Seattle Prof.
|
Verfasst: Fr 08.04.11 11:18
badstuberl hat folgendes geschrieben : | also ich brauche sie global, aber nur "unit-global". sie sind in der unit gekapselt. |
Dann gehören die Variablen natürlich in den implementation-Teil.
Ich mache das so, daß sie gleich am Anfang und nicht irgendwo im Quelltext definiert werden - das erhöht die Übersichtlichkeit und die Wiederauffindbarkeit.
Da Du gerade erst mit Delphi anfängst: Laß Dich nicht von irgendwelchen "sollte man"/"sollte man nicht"-Hinweisen verunsichern. Objektorientierte Programmierung ist nicht immer die beste Lösung für jedes Problem.
Sobald Du aber mit der Delphi-klick-mich-zusammen Methode anfängst, kommst Du nicht mehr darum herum, Dich mit der Objekt-Philosophie auseinanderzusetzen.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 08.04.11 12:12
Thom hat folgendes geschrieben : | Objektorientierte Programmierung ist nicht immer die beste Lösung für jedes Problem. |
Stimmt, man kann (bezogen auf die Fragestellung) die Daten auch einfach immer als Parameter mitgeben. Globale Variablen sollten jedenfalls nur eine Notlösung sein.
|
|
Thom
      
Beiträge: 70
Erhaltene Danke: 5
Delphi 10 Seattle Prof.
|
Verfasst: Fr 08.04.11 13:19
jaenicke hat folgendes geschrieben : | Globale Variablen sollten jedenfalls nur eine Notlösung sein. |
Jain. Ich würde so sagen: Wenn es sinnvoll ist, dann Ja. Damit würde ich dann lieber folgende Aussage treffen:
Globale Variablen sollten jedenfalls nur eine Lösung sein, wenn es sinnvoll ist.
Es gibt genügend Beispiele für globale Variablen:
- Formulare
- Forms.Application
- Forms.Screen
- Clipbrd.Clipboard
- SysUtils.DecimalSeparator/SysUtils.FormatSettings
- ...
|
|
|