Xojo Conferences
XDCMay2019MiamiUSA

Close-Event (Real Studio network user group Deutschland Mailinglist archive)

Back to the thread list
Previous thread: Secret of Manj
Next thread: Socket Frage


AW: RB Programme unter Jaguar   -   gerhard queisser
  Close-Event   -   Pepe
   Re: Close-Event   -   Claudius Sailer
    Re: Close-Event   -   Pepe
     Re: Close-Event   -   Claudius Sailer
   Re: Close-Event   -   Christian Schmitz
    Re: Close-Event   -   Pepe
     Re: Close-Event   -   Stephan Stoske
      Re: Close-Event   -   Pepe
       Re: Close-Event   -   Stephan Stoske
   Secret of Manj   -   Andreas D

Close-Event
Date: 07.08.02 17:53 (Wed, 7 Aug 2002 18:53:26 +0200)
From: Pepe
Hallo Leute,

Ich habe im Close-Event eines Fensters etwas Code. Genauer gesagt,
schreibe ich in diesem Event in drei verschiedene TextFiles. Also - wenn
ich das Fenster schliesse - wird gesucht, ob die drei TextFiles
existieren, und dann reingeschrieben. Wenn sie nicht exisiteren, werden
sie per CreateTextFile gemacht und dann wird reingeschrieben. Wie
gesagt, alles im Close-Event des Fensters.

Allerdings bemerke ich, dass RB an dieser Stelle (wenn der Close-Event
des Fensters aufgerufen wird) häufig (nicht immer) abstürtzt. Compiliert
und in der IDE. RB 4.5 X.

Was tun?

Grüsse,
Pepe

PS: der Code funktioniert natürlich.

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Close-Event
Date: 07.08.02 18:05 (Wed, 7 Aug 2002 19:05:52 +0200)
From: Claudius Sailer
Am Mittwoch den, 7. August 2002, um 18:53, schrieb Pepe:

> Ich habe im Close-Event eines Fensters etwas Code. Genauer gesagt,
> schreibe ich in diesem Event in drei verschiedene TextFiles. Also -
> wenn ich das Fenster schliesse - wird gesucht, ob die drei TextFiles
> existieren, und dann reingeschrieben. Wenn sie nicht exisiteren, werden
> sie per CreateTextFile gemacht und dann wird reingeschrieben. Wie
> gesagt, alles im Close-Event des Fensters.
>
> Allerdings bemerke ich, dass RB an dieser Stelle (wenn der Close-Event
> des Fensters aufgerufen wird) häufig (nicht immer) abstürtzt.
> Compiliert und in der IDE. RB 4.5 X.
>
> Was tun?

Hast Du mal versucht den "Speicherprozess" in eine Methode auszulagern
und von Event aus aufzurufen? Ich weiss zwar nicht ob das was hilft,
aber ein Versuch waere es Wert. Speicherst Du da viel?

Claudius

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Close-Event
Date: 07.08.02 18:56 (Wed, 7 Aug 2002 19:56:27 +0200)
From: Pepe

Am Mittwoch den, 7. August 2002, um 19:05, schrieb Claudius Sailer:

> Am Mittwoch den, 7. August 2002, um 18:53, schrieb Pepe:
>
>> Ich habe im Close-Event eines Fensters etwas Code. Genauer gesagt,
>> schreibe ich in diesem Event in drei verschiedene TextFiles. Also -
>> wenn ich das Fenster schliesse - wird gesucht, ob die drei TextFiles
>> existieren, und dann reingeschrieben. Wenn sie nicht exisiteren,
>> werden sie per CreateTextFile gemacht und dann wird reingeschrieben.
>> Wie gesagt, alles im Close-Event des Fensters.
>>
>> Allerdings bemerke ich, dass RB an dieser Stelle (wenn der Close-Event
>> des Fensters aufgerufen wird) häufig (nicht immer) abstürtzt.
>> Compiliert und in der IDE. RB 4.5 X.
>>
>> Was tun?
>
> Hast Du mal versucht den "Speicherprozess" in eine Methode auszulagern
> und von Event aus aufzurufen? Ich weiss zwar nicht ob das was hilft,
> aber ein Versuch waere es Wert.
>
> Claudius

Claudius, bevor ich meine erste Mail zu diesem Thema abgesandt habe,
hatte ich auch diese Idee. Aber das würde doch nur alles verlagern, der
Ablauf bleibt doch der gleiche? Ob ich den Code jetzt im Close-Event
hab' oder vom Close-Event aus drauf zugreife, ist doch eher egal, oder?

Aber du hast natürlich recht, Claudius, einen Versuch ist's immer wert.
Deswegen probier ich's nachher mal.

> Speicherst Du da viel?

Na ja, viel wäre übertrieben. In zwei Textfiles ca. 5 Zeilen, in die
dritte vielleicht 50 Zeilen. Also nix besonderes (oder besser nix, was
Probleme bereiten sollte).

Ich sag dann, ob's was genutzt hat.

Grüsse,
Pepe

Re: Close-Event
Date: 08.08.02 05:29 (Thu, 8 Aug 2002 06:29:06 +0200)
From: Claudius Sailer

Am Mittwoch den, 7. August 2002, um 19:56, schrieb Pepe:

> Claudius, bevor ich meine erste Mail zu diesem Thema abgesandt habe,
> hatte ich auch diese Idee. Aber das würde doch nur alles verlagern, der
> Ablauf bleibt doch der gleiche? Ob ich den Code jetzt im Close-Event
> hab' oder vom Close-Event aus drauf zugreife, ist doch eher egal, oder?
>
> Aber du hast natürlich recht, Claudius, einen Versuch ist's immer wert.
> Deswegen probier ich's nachher mal.

Ich habe schon die affigsten Dinger erlebt.

ich hatte in einem ButtonEvent ausversehen stehen

aktuellesWindow.close
fertig=true

auf langsamen Rechnern (G3, und den ersten G4) war dnach die Variable
fertig tatsaechlich true. Auf den schnelleren G4 war fertig nicht true.
Natuerlich ist der ProgrammCode so falsch, aber anscheinend war der
CloseProzess so lahm, dass fertig noch auf true gesetzt werden konnte.

Aber am Besten denke ich waere der Vorschlag von Stefan mit
CancelClose-Event. Daran habe ich gar nicht gedacht!!

Ciao

Claudius

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Close-Event
Date: 07.08.02 21:23 (Wed, 7 Aug 2002 22:23:12 +0200)
From: Christian Schmitz
> Hallo Leute,
>
> Allerdings bemerke ich, dass RB an dieser Stelle (wenn der Close-Event
> des Fensters aufgerufen wird) häufig (nicht immer) abstürtzt. Compiliert
> und in der IDE. RB 4.5 X.
>
> Was tun?

Nil Exception, die nicht mehr gehandelt wird, weil ein das Programm sich
beendet?

Mfg
Christian

--

Re: Close-Event
Date: 07.08.02 22:21 (Wed, 7 Aug 2002 23:21:30 +0200)
From: Pepe

Am Mittwoch den, 7. August 2002, um 22:23, schrieb Christian Schmitz:

>> Hallo Leute,
>>
>> Allerdings bemerke ich, dass RB an dieser Stelle (wenn der Close-Event
>> des Fensters aufgerufen wird) häufig (nicht immer) abstürtzt.
>> Compiliert
>> und in der IDE. RB 4.5 X.
>>
>> Was tun?
>
> Nil Exception, die nicht mehr gehandelt wird, weil ein das Programm sich
> beendet?

Normalerweise sollte da kein NilObjectExceptionError auftreten, und wenn
ja, würde er das Proggie und RB nicht gleich zum Absturz bringen.
Ausserdem kommt dann bei der compilierten App eine MsgBox mit dem Error.

Wenn es doch zutreffen würde, könnte er aber gehandelt werden, weil zwar
der Close-Event eines Fensters aufgerufen wird, aber nicht quit. D.h.,
wenn ich den entsprechenden Close-Event aufrufe, will ich keinesfalls
das Programm beenden, sondern nur das Fenser schliessen.

Wenn du meinst, der Error kann nicht mehr gehandelt werden, weil eben
das Programm vorher abstürtzt, könntest du schon recht haben. Aber genau
das will ich ja wissen: warum stürtzt das Programm vorher ab?

Ich probier morgen mal Claudius Vorschlag, per Methode drauf
zuzugreifen, und melde mich dann wieder.

Gruss,
Pepe

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Close-Event
Date: 07.08.02 22:51 (Wed, 7 Aug 2002 23:51:46 +0200)
From: Stephan Stoske

Hi,

du solltest das mit einer Methode machen und true zurückgeben,
wenn das Speichern geklappt hat.
Diese Methode rufst du auch nicht vom Close-Event auf,
sondern vom CancelClose-Event. Der unterbricht das schliessen
des Fensters (und damit vielleicht den Fehler) wenn was schiefging.

Im optimalen Falle steht im CancelClose-Event nur...

Return saveMyThings( weissDerGeier )

Und im Close-Event garnichts,
oder die Auflösung einer Referenz wenn es eine gab...

myAppClass.myActivDoc = nil

Grüße, Stephan

-------------------------------------------------------------------------
stoske & bertling - visuelle kommunikation
lohmühler berg 30 - 42553 velbert - fon 02053/504464 - fax 02053/923630
<email address removed> - www.stoske-bertling.de - ftp.stoske-bertling.de

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Close-Event
Date: 08.08.02 07:47 (Thu, 8 Aug 2002 08:47:47 +0200)
From: Pepe

Am Mittwoch den, 7. August 2002, um 23:51, schrieb Stephan Stoske:

>
> Hi,
>
> du solltest das mit einer Methode machen und true zurückgeben,
> wenn das Speichern geklappt hat.
> Diese Methode rufst du auch nicht vom Close-Event auf,
> sondern vom CancelClose-Event. Der unterbricht das schliessen
> des Fensters (und damit vielleicht den Fehler) wenn was schiefging.

Hmmm...meine App hat ungefähr 15 Fenster, und bei jedem steht im
Close-Event der Code zum abspeichern :-( ...es ist kurioserweise aber
so, dass nur bei besagtem Fenster Probleme auftreten (wahrscheinlich
gerade da, weil ich dort in drei verschiedene TextFiles schreibe bzw.
diese kreire).

Auffällig ist auch, dass - wenn ich das besagte Fenster schliesse -
danach sich der Mauszeiger kurzzeitig in eine Uhr verwandelt (wenn das
Fenster schon geschlossen ist). Nach zwei, drei Sekunden wird der
Mauszeiger wieder normal (wenn das Prog hier nicht abstützt - wenn, dann
stürtzt es immer hier ab).

Aber was bringt mir denn der CancelClose-Event hier wirklich? Wartet
der, bis der ganze Code ausgeführt ist, und beendet dann erst? Wenn er
"nur" das Schliessen des Fensters unterbricht, bringt er mir ja auch
nix. Dann steht der User vor einem Fenster, dass sich nicht schliessen
lässt...?!?

Danke trotzdem,
Gruss,
Pepe

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Close-Event
Date: 08.08.02 11:25 (Thu, 8 Aug 2002 12:25:44 +0200)
From: Stephan Stoske

Hi,

> Dann steht der User vor einem Fenster, dass sich nicht schliessen
> lässt...?!?

Ja, sicher, dass doch um Längen besser als das Fenster trotzdem
zu schliessen = Daten weg, vielleicht war ja bloss ein falsches,
volles Medium selektiert.

Es ist meist von Vorteil vorhandene Mechanismen zu benutzen
statt parallel eigene aufzubauen, die dasselbe machen.

- Das bringt dir Konformität, d.h. es funktioniert so wie man es
gewohnt ist, ohne das man es explizit programmieren muss.
- Du sparst viel Code, das macht es übersichtlicher, ist leichter
zu verstehen und zu ändern.
- Das macht es sicherer, da Kontrolle durchs System, statt durch dich.

Beispiel: Das QSC-Verhalten (Quit-Save-Cancel).
Es sind neun Dokumente offen, drei sind gesichert, drei sind ungesichert,
drei haben noch garkeinen Namen. Wenn man das Programm nun beendet
passiert eine ganze Menge, aber streng geregelt.
Die Fenster müssen sich rückwärts anhand der sichtbaren Reihenfolge
schliessen. Die Gesicherten schliessen sich direkt, für die Ungesicherten
kommt der Dialog: "Änderungen sichern?", für die Namenlosen kommt
ein Save-Dialog. Je nach Dialog und Reaktion (Save, Cancel) muss der
ganze Quit-Prozess gestoppt werden. Kennt jeder, erwartet jeder.

Versucht man dieses Verhalten selber zu programmiern, wird man
sich wundern wir schwer das ist, und wieviel komplizierten Code man
dafür braucht. Ausserdem "kämpft" man dann oft gegen das System,
ändert die Grundstruktur dafür, muss extra Parameter einführen usw.

Keine Frage, oder? ;-)

Grüße, Stephan

-------------------------------------------------------------------------
stoske & bertling - visuelle kommunikation
lohmühler berg 30 - 42553 velbert - fon 02053/504464 - fax 02053/923630
<email address removed> - www.stoske-bertling.de - ftp.stoske-bertling.de

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>