Seite 3 von 6

Verfasst: 21.08.2008 18:52
von edel
1. beim beispiel von edel kann man den eventloop auch direkt in der main() procedure einbaun
2. die verwendung einer main() procedure ist auch kein muss, sondern eine stilfrage.
Das kann nur jemand schreiben der es nocht nicht ausprobiert hat,
und die Funktion "Main" stand hier auch nicht zu Debatte
Der Vorteil liegt doch klar auf der Hand, bzw ist doch ersichtlich.
Das ganze ist uebersichtlicher,weniger fehleranfaelliger und vor
allem benutzerfreundlicher.

Re: Grundsätzliche Frage zur Programmstruktur

Verfasst: 21.08.2008 19:02
von Bisonte
Jungs.... Kommt mal wieder runter...
Es geht doch bloss um die Frage : "wie macht man das, bzw wie macht ihr das ...."

Jeder machts auf seine Art und weise... Da muss sich keiner aufregen oder "herablassend" werden.... nur mal so nebenbei.

über Geschmack lässt sich nunmal nicht streiten ;)

Verfasst: 21.08.2008 19:12
von Kaeru Gaman
ich finds nur wieder mal ätzend...
die meisten leute schreiben "ich mach das so und so",
und einige schreiben dazu "denn das und das"

nur monseur Bild stellt sich mal wieder hin und schreibt
Es gibt keinen besseren Weg !
ignoriert geflissentlich
TomS hat geschrieben:Hallo. Kannst du auch erklären, warum das besser ist? ... Wo sind denn da die Vorteile?
und schreibt lediglich
edel hat geschrieben:Der Vorteil liegt doch klar auf der Hand, bzw ist doch ersichtlich.
nun, wenn der Vorteil so deutlich und klar ersichtlich ist,
dann muss er sich doch auch einfach ausformulieren lassen...

und wenn nicht, dann ist es eben doch nur heiße luft.

Verfasst: 21.08.2008 20:52
von Little John
ts-soft hat geschrieben:Vermeidet z.B. While WindowEvent() : Wend
Das habe ich mit Überraschung gelesen. Ich meine, hat denn

Code: Alles auswählen

While WindowEvent() : Wend
Nachteile, so dass man es möglichst vermeiden sollte? :o

Gruß, Little John

Verfasst: 21.08.2008 21:00
von ts-soft
Little John hat geschrieben:Das habe ich mit Überraschung gelesen. Ich meine, hat denn

Code: Alles auswählen

While WindowEvent() : Wend
Nachteile, so dass man es möglichst vermeiden sollte? :o

Gruß, Little John
Das verschluckt ja nur Ereignisse, solange der User keine Auslösen kann,
also das Fenster nicht sichtbar ist, ist es egal, aber sollte man nicht machen,
wenn das Fenster sichtbar und aktiviert ist. Mancher User ist nicht so
begeistert, wenn er irgendwo hinklickert und nix paschiert.

Gruß
Thomas

Verfasst: 21.08.2008 21:34
von Little John
ts-soft hat geschrieben:Das verschluckt ja nur Ereignisse, solange der User keine Auslösen kann, also das Fenster nicht sichtbar ist, ist es egal,
Kann man nicht auch sagen, dass diese "leere Schleife" Windows ermöglicht, alle noch in einer Warteschlange befindlichen Ereignisse abzuarbeiten? D.h. dass es manchmal sehr sinnvoll sein, sowas an best. Stellen im Programm einzubauen?
ts-soft hat geschrieben:aber sollte man nicht machen,
wenn das Fenster sichtbar und aktiviert ist. Mancher User ist nicht so
begeistert, wenn er irgendwo hinklickert und nix paschiert.
Abgesehen davon, dass es in diesem Thread (jetzt) offenbar schwer ist, eine polemikfreie Antwort zu bekommen ...
Das heißt also, dass es darauf ankommt wo und in welchem Zusammenhang

Code: Alles auswählen

While WindowEvent() : Wend
verwendet wird. Das ist doch sowieso klar. Aber ich sehe nicht dass es darum geht, das generell zu vermeiden.

Das heißt ich verstehe immer noch nicht warum die Aussage
Vermeidet z.B. While WindowEvent() : Wend
für die Konstruktion von edel spricht. Zumal diese Aussage meines Erachtens impliziert, dass ohne edels Konstruktion zwangsläufig das (zu vermeidende)

Code: Alles auswählen

While WindowEvent() : Wend
benutzt werden müsste. Was aber ja nicht der Fall ist.

Gruß, Little John

Verfasst: 21.08.2008 21:46
von ts-soft
Little John hat geschrieben: Das heißt ich verstehe immer noch nicht warum die Aussage
Vermeidet z.B. While WindowEvent() : Wend
für die Konstruktion von edel spricht. Zumal diese Aussage meines Erachtens impliziert, dass ohne edels Konstruktion zwangsläufig das (zu vermeidende)

Code: Alles auswählen

While WindowEvent() : Wend
benutzt werden müsste. Was aber ja nicht der Fall ist.
Doch, auf andere Weise könnte man nicht das Fenster anzeigen während die
Gadgets gefüllt werden, bzw. die dabei anfallenden Ereignisse abarbeiten,
ohne das Useraktionen verloren gehen.
Andere Methode wäre, das Fenster versteckt zu erstellen, die Gadgets
füllen, dann die Ereignisse abarbeiten und danach erst das Fenster anzeigen.
Da ist Edels Methode meist die bessere.

Für die meisten Popelfenster ist dieser Aufwand nicht nötig, da kommts nicht
zum Fenstertitel: Keine Rückmeldung o. ä., bzw. Flimmern, oder Buttons,
Schließkreuz usw. haben keine Auswirkung, weil die Ereignisse ja noch
garnicht bearbeitet werden, da die Fenstererstellung noch garnicht
abgeschlossen ist.

Es gibt nichts schlimmeres, als ein Fenster das nicht richtig reagiert!
Das ist leider bei vielen geskinnten Fenstern so, einer der Gründe warum
ich diese nicht mag :wink:

Verfasst: 22.08.2008 00:01
von mk-soft
Viele Wege führen nach Rom. In der Programmierung unendlich viele Wege.

Jeder sollte sich seine eigene regeln erstellen womit er klar kommt.
Sollte aber immer strukturiert sein und mit genügende Kommentare versorgt werden.

Ich selber verwendet bei grösseren Projekten meine eigene Tools die mir den ganzen Eventverarbeitung abnimmt. Automatisierung in Programmierung hilft ungemein.

Verfasst: 22.08.2008 11:15
von Josef Sniatecki
@mk-soft
Da kann man dir nur Recht geben.

@franky
franky hat geschrieben: 1. Programm Kommentarkopf
2. Konstanten
3. Globale Variablen und Stukturen (bei grossen Projekten als Include 'Global.pbi')
4. Proceduren und Funktionen
5. Main
6. DataSection
Diese Aufteilung würde ich für größere Projekte auch nutzen, denn
sonst könnten globale Variablen zu spät definiert werden. Das gleiche
gilt für Konstanten usw.

Hier habe ich noch etwas hinzugefügt:

Code: Alles auswählen

1. Programm Kommentarkopf
  1.1. Programm-Name
  1.2. Autor
  1.3. Datum
  [1.4.] Kommentar
2. Includes
3. Macros
4. Konstanten
5. Strukturen
6. Globale Variablen
7. Prozedur-Definitionen
8. Eigentliche Prozeduren
9. Hauptcodde (Main)
  9.1. Initalisierungen
  9.2. Der Code
  [9.3.] End
10. DataSection(s)
Wie gesagt/geschrieben: Kann für große Projekte gut sein. Jeder hat
seinen eigenen Stil.

Verfasst: 22.08.2008 13:44
von TomS
mk-soft hat geschrieben:Viele Wege führen nach Rom. In der Programmierung unendlich viele Wege.
Das streitet ja niemand ab. Was ich nicht versteht, ist, wie man einen Weg als das Non-Plus-Ultra darstellen ("Es gibt einfach nichts besseres") und auf die Frage "Warum gibt es nichts besseres?" sinngemäß mit "Ist halt so." oder "Sieht doch jeder, warum das besser ist." antworten kann.

Bis jetzt wurde eine Begründung gegen "While-Wend" angegeben, dass es evtl. Ereignisse verschluckt. Aber dafür, dass man den Eventloop in eine Procedure packt, bis auf die Übersichtlichkeit (subjektiv) nichts.

@Josef Sniatecki: Das stellt sich mir gleich noch eine Frage.
7. Prozedur-Definitionen
8. Eigentliche Prozeduren
also

Code: Alles auswählen

Declare Function.l()

Procedure Function.l()
    ;Code
EndProcedure
Das macht doch auch keinen Sinn, oder meinst du mit "Prozedur-Definitionen" etwas anderes?