Seite 2 von 6

Verfasst: 21.08.2008 16:53
von Josef Sniatecki
Jetzt wurde ich voll weg geschossssen. (hat ja auch einen Grund :oops: )
Egal...
Trotzdem erspaare ich mir solche Umwege und schreibe gerne in eine
Wurst. :wink:

Verfasst: 21.08.2008 16:55
von edel
Fuer kleine Anwendungen sicherlich ueberzogen, aber sonst dem
Kaese aus der Hilfe vorzuziehen. Alleine "while windowevent wend"
ist schon Grund genug, von der Uebersicht ganz zu schweigen.

Muss natuerlich jeder fuer sich selber wissen.

>>Wiso sollte man die gleichen Event-Prozedur 2x gebrauchen?

Ein Grund steht ja schon oben, z.B. hat man somit noch die Kontrolle
beim befuellen eines Fensters.

Verfasst: 21.08.2008 17:05
von Kaeru Gaman
könntest du mal bitte etwas plakativer werden anstatt dich stets in arkane Nebel zu hüllen...?

Verfasst: 21.08.2008 17:12
von ZeHa
Andreas_S hat geschrieben:Und wenn es euch jetzt schon um 1 Procedure-call an kommt, dann schreibt euren Code doch gleich in eine Wurst :freak: .
LOL, kein Code mehr, sondern klassischer "Kot" dann sozusagen :mrgreen:

CodeWurst wäre auch mal ein guter Name... egal ob als Nick oder als Programmiersprache

Verfasst: 21.08.2008 17:40
von edel
Kaeru Gaman hat geschrieben:könntest du mal bitte etwas plakativer werden anstatt dich stets in arkane Nebel zu hüllen...?
:?

Code: Alles auswählen

Procedure doEvents(timeout=#PB_Default)
	event = WaitWindowEvent(timeout)
	
	If event = #PB_Event_CloseWindow
		End
	EndIf
	
	If event = #PB_Event_Gadget
		
		
		If EventGadget() = 0	
			SetGadgetText(2,GetGadgetText(0))			
		EndIf
		
		
		If EventGadget() = 1	
			SetGadgetText(2,GetGadgetText(1))			
		EndIf

		
	EndIf
	
EndProcedure

Procedure main()
	
	hwnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,400,300,"")
	
	CreateGadgetList(hwnd)
	
	ListViewGadget(0,5,5,290,140)
	ListViewGadget(1,5,150,290,140)
	
	TextGadget(2,300,5,80,23,"")
		
	For i = 0 To 1000
		AddGadgetItem(0,-1, "item-" + Str(i) )
		AddGadgetItem(1, 0, "item-" + Str(i) )
		doEvents(0)		
	Next
	
	Repeat
		doEvents()			
	ForEver	
	
EndProcedure:main()


Verfasst: 21.08.2008 18:00
von Kaeru Gaman
chic!
das sagt überhaupt nix aus!

wenn du dich entsinnen magst, meine Frage war,
warum du der Ansicht bist,
dass ein Eventloop in einer Procedure besser aufgehoben ist
als im Basisteil des Programms.

wenn du das begründen kannst, dann hat die Aussage
Es gibt keinen besseren Weg !
eine Allgemeingültigkeit.

wenn nicht, ist es nur ein gekloppter Spruch.

Verfasst: 21.08.2008 18:11
von Franky
Sowas hat als Macro auch vorteile ;)

Allerdings, ein Vorteil, der klar und bestechend bleibt für Edels Methode steht ist folgender:
ICH verwende Standardmäßig die 2 Variablen event und quit

Code: Alles auswählen

Repeat 
   event=WaitwindowEvent()
   If event=blablabla....
   endif 
Until quit<>0
Da ich mir Variablen-Deklaration angewöhnt habe, ist eine Procedure nützlich, da man die Variablen als Protected deklarieren kann und es kein problem gibt, wenn man das mal vergisst.
Wenn ich nämlich ein Dialogfenster öffne und dann wieder Schließe, geschieht das, weil quit<>0 ist. Ist Quit global, schmiert mir dadurch dann auch mein Hauptfenster ab.
Achja, beim allgemeinen Aufbau kann man sich übrigends auch streiten.

Code: Alles auswählen

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
von mk-Soft habe ich mittlerweile über Bord geworfen, weil mein Stil schon fast zum Objektorientierten hin geht.

Wenn ich dann zum Beispiel ein Array mit Statusmeldungen habe, Ruf ich die eigenen Indizes immer über mittels Enumeration deklarierten Konstanten auf (Selbst wenn ich nie über direkte Konstanten auf das Array zugreife, find ich es so einfach übersichtlicher).

Mk-s Methode würde diese Konstanten nun zu den Fenster-Konstanten und Gadget-Konstanten hoch schieben. Aber da haben die doch nun mal garnix zu suchen
:freak:

Verfasst: 21.08.2008 18:16
von ts-soft
Ich wüßte nicht wie man obigen Code anders als in einer Procedure
bewerkstelligen sollte?
Vermeidet z.B. While WindowEvent() : Wend, es wird auch beim aktualisieren
der erstellten Gadgets alle events abgearbeitet.
Einzig andere Alternative wäre ein verstecktes Fenster, das erst nach
Aktualisierung angezeigt wird.
Ausserdem ist Code ausserhalb von Proceduren sowieso nicht so optimal.

Verstehe also das Geschrei von Kaeru nicht

Verfasst: 21.08.2008 18:36
von Kaeru Gaman
und ich versteh nicht, wie ihr 37 annahmen und stilfragen einfach als begebenheiten annehmen könnt, und dann auch noch herablassend werden, wenn man euch nicht sofort zustimmt.

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.

also, wenn ihr hier die dicken machen wollt mit eurem stil,
dann schreibt wenigstens ein paar absätze dazu, um andere überzeugen zu können,
oder noch besser, schreibt mal ein paar tutorials, wo immer wieder jede menge neueinsteiger nach fragen.

aber sich einfach so hinstellen, und so tun als wenn euch der hanf aus dem hintern wächst,
ist weder guter stil noch hat es irgendeine berechtigung.

Verfasst: 21.08.2008 18:38
von ts-soft
> und so tun als wenn euch der hanf aus dem hintern wächst
Das sollte aber unter uns bleiben :wink: