• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

[Dev] "Fehler" im Sourcecode

maierkurt

Geowizard
Betrifft: myTableControl.java, markierte Caches löschen.

Code:
public void popupMenuEvent(Object selectedItem){
		CacheHolder ch;
		if (selectedItem.toString().equals(MyLocale.getMsg(1015,"Select all"))){			setSelectForAll(true);
		}

		if (selectedItem.toString().equals(MyLocale.getMsg(1016,"De-select all"))){
			setSelectForAll(false);
		}

		if (selectedItem.toString().equals(MyLocale.getMsg(1012,"Delete"))){
=======>		Vm.showWait(true);
			// Count # of caches to delete
			int count=0;
			for(int i = cacheDB.size()-1; i >=0; i--){
				if ( ((CacheHolder)cacheDB.get(i)).is_Checked) count++;
			}
			if (count>0) {
ZEILE 130 ====>			if ((new MessageBox(MyLocale.getMsg(144,"Warnung"),MyLocale.getMsg(1022, "Delete all caches that have a tick?"), FormBase.YESB | FormBase.NOB)).execute() != FormBase.IDYES) return;
				DataMover dm=new DataMover();
				myProgressBarForm pbf = new myProgressBarForm();
				Handle h = new Handle();
				pbf.setTask(h,MyLocale.getMsg(1012, "Delete selected"));
				pbf.exec();
				int nDeleted=0;
				int size=cacheDB.size();
				for(int i = size-1; i >=0; i--){// Start Counting down, a

Die Sanduhr wird zwar gesetzt, wenn ich die Aktion "Markierte Caches löschen" aber abbreche (auf nein klicken) wird die Sanduhr nicht wieder deaktiviert, da ja direkt mit return zurückgesprungen wird.


Gruß, maierkurt
 

MiK

Geoguru
Gegenüber wem hatte ich vor kurzem erwähnt, dass returns mitten in einer Funktion unschön sind? ;-)

Genau so eine hängenbleibende Sanduhr habe ich vor kurzem schon an einer anderen Stelle beseitigt. Das sollte kein großes Problem sein.
 

schappi

Geocacher
Die Sanduhr bleibt auch, wenn "markierte Aktualisieren" auf einen Fehler läuft (Login incorrect).

FS
 

MiK

Geoguru
maierkurt schrieb:
Die Sanduhr wird zwar gesetzt, wenn ich die Aktion "Markierte Caches löschen" aber abbreche (auf nein klicken) wird die Sanduhr nicht wieder deaktiviert, da ja direkt mit return zurückgesprungen wird.
Das konnte ich nachvollziehen und fixen.

schappi schrieb:
Die Sanduhr bleibt auch, wenn "markierte Aktualisieren" auf einen Fehler läuft (Login incorrect).
Das konnte ich nicht nachvollziehen. Bei mir verschwindet die Sanduhr bei fehlgeschlagenem Login.
 

rautaxe

Geocacher
Also bei mir ist auch schon öfter die Sanduhr geblieben,
leider kann ich das bis jetzt noch nicht reproduzieren.
Es war auf jeden Fall nicht beim Abbruch des Login.
Ich glaub das war nach dem Spidern oder den Laden von Karten,
aber eben nicht immer.
Version r1346

PS: Bei unseren Programmierrichtlinien (Firma), haben wir aufgenommen,
dass nur ein Return/trow in einer Methode zulässig ist, weil es dadurch immer wieder zu
undefinierten Zuständen kam.
 

MiK

Geoguru
rautaxe schrieb:
Also bei mir ist auch schon öfter die Sanduhr geblieben,
leider kann ich das bis jetzt noch nicht reproduzieren.
Es war auf jeden Fall nicht beim Abbruch des Login.
Ich glaub das war nach dem Spidern oder den Laden von Karten,
aber eben nicht immer.
Version r1346
Ohne ein Vorgehen, dass ich selbst nachstellen kann, habe ich wenig Lust den ganzen Code nach Fehlern zu durchkämmen.

rautaxe schrieb:
PS: Bei unseren Programmierrichtlinien (Firma), haben wir aufgenommen,
dass nur ein Return/trow in einer Methode zulässig ist, weil es dadurch immer wieder zu
undefinierten Zuständen kam.
Das ist bestimmt sinnvoll. Am besten man setzt es dann auch noch mit dem Versionsverwaltungstool hart durch. Wobei ich allerdings mit ein paar returns am Anfang einer Funktion bei der Überprüfung der Argumente noch leben kann. Aber wenn die eigentliche Arbeit der Funktion beginnt, sollte das nicht mehr sein. Aber noch schlimmer war, als ich mal auf Code gestoßen bin, in dem mitten drin ein unkonditionales return stand und danch noch hunderte Zeilen Code...
 

rautaxe

Geocacher
@MIK:
Dass Du keine Lust hast den Code auf verdacht durchzugehen,
kann ich verstehen.

Wie gesagt ich versuche ihn zu reproduzieren und dann bekommst Du von mir eine
detaillierte Beschreibung.
 
Oben