Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Kein Audiogerät
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 129
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11.01.2012, 20:31   #1 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von GT43A
 
Registriert seit: 04.12.2011
Ort: Pöcking
Beiträge: 126
Standard Problem: Programmende abfangen

Das Programm wird doch nur ab geschossen und nicht ordnungsgemäß beredet!
Code:
 
' Haupt-Fenster öffnen
'
Cls
' Messageschleife ist nötig für jedes Fenster (hier unser Hauptfenster)
'
' Unendliche Schleife starten
'
While 1 
  ' Warten, bis eine Meldung an unser Fenster geschickt wurde
  '
  WaitInput 
  ' Wenn die XProfan-Variable %key gleich 2 war, wurde eine Fenster-Schliessen-Meldung erhalten.
  '
  If %key=2 
    ' 
    ' In dem Fall verlässt das BREAK unsere Schleife sofort
    '
    BREAK 
  EndIf
 ' Unendliche Schleife wieder von vorn beginnen
 '
 EndWhile 

Print "Hallo ich muss noch sichern"
Waitinput
' Programmende
'       
End 'Der Quellcode erzeugt ein noch leeres Fenster. Es liegt
__________________
Gerd
Windows 7 Home Premium SP1 32Bit XProfanX2 12.0B-N

Geändert von Frabbing (16.01.2012 um 22:05 Uhr) Grund: Abgetrennt
GT43A ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 11.01.2012, 20:50   #2 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Irrtum,

das BREAK verlässt die Schleife und landet bei END.
Das Programm ist ordnungsgemäss beendet.

Wenn Du natürlich noch etwas vor END einbaust....
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Alt 11.01.2012, 21:00   #3 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 759
Standard

Hier wird doch nichts abgeschossen! Das ist das Standardverhalten und reguläre Ende von XProfan-Programmen. Wenn du selbst die Verwaltung des Systemmenüs übernehmen willst, um noch Aufräumaktionen auszuführen, findest Du in der Hilfe die entsprechenden Windowstyles und Abfragemöglichkeiten.
Zum Beispiel mit dem Stil 256 kannst Du das Beenden mit %Key = 2 abfragen und entsprechende Aktionen ausführen. Und eine elegante Möglichkeit, unabhängig vom Stil hast Du ja mit ~wm_Close schon selbst gefunden.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 11.01.2012, 21:00   #4 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Zitat:
Zitat von Andreas Miethe Beitrag anzeigen
Irrtum,

das BREAK verlässt die Schleife und landet bei END.
Wäre ja schön, wenn es so wäre, %Key = 2 wird niemals erreicht, das
Fenster schließt einfach und evtl. Aufräumcode wird niemals ausgeführt,
deshalb haben ja so viele Profan Programme Memoryleaks.
__________________
Gruß Thomas

Wenn mir früher jemand gesagt hätte, ich würde
freiwillig eine Wanze mit mir herum tragen und sie
auch noch selbst aufladen, hätte ich laut gelacht.

Heute habe ich ein Smartphone.


http://realsource.de
ts-soft ist gerade online   Mit Zitat antworten
Alt 11.01.2012, 21:16   #5 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von GT43A
 
Registriert seit: 04.12.2011
Ort: Pöcking
Beiträge: 126
Standard

Zitat:
Zitat von ts-soft Beitrag anzeigen
Wäre ja schön, wenn es so wäre, %Key = 2 wird niemals erreicht, das
Fenster schließt einfach und evtl. Aufräumcode wird niemals ausgeführt,
deshalb haben ja so viele Profan Programme Memoryleaks.
Genau so ist das,
Ok habe mal in der Hilfe nach UserMessage geschaut,
und dort ist es auch gut erklärt warum.
Zitat: Eine sinnvolle Anwendung ist z.B. die Message zum Schließen des Hauptfensters abzufangen, um etwa vor Beenden des Programmes noch etwas zu speicher oder Speicher frei zu geben.

Code:
Declare Ende%
UserMessages $10
CLS
WhileNot Ende%
WaitInput
If %UMessage = $10
If @MessageBox("Programm beenden?", "Frage", 36) = 6
Ende% = 1
EndIf 
EndIf
EndWhile
End
Genau dieses wissen fehlt doch dem Einsteiger!
Der sucht sich dann dumm und dämlich und fragt sich „was mach ich falsch“
__________________
Gerd
Windows 7 Home Premium SP1 32Bit XProfanX2 12.0B-N
GT43A ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 11.01.2012, 21:28   #6 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

WM_CLOSE sollte in jedem EventLoop erforderlich sein, wenn nicht vorhanden
darf das Loop auch nicht auf das Close reagieren, wie es jetzt der Fall ist.
Außerdem sollten alle Beispiele in der Hilfe daraufhin angepasst werden.

Aber dieses Problem ist so alt wie Profan selbst, inzwischen gibt es wenigstens UserMessages, früher hat man den schließen Button disabled und
das Systemmenü entfernt um MemoryLeaks zu vermeiden .

Aber darüber diskutieren bringt ja nichts.
__________________
Gruß Thomas

Wenn mir früher jemand gesagt hätte, ich würde
freiwillig eine Wanze mit mir herum tragen und sie
auch noch selbst aufladen, hätte ich laut gelacht.

Heute habe ich ein Smartphone.


http://realsource.de
ts-soft ist gerade online   Mit Zitat antworten
Alt 11.01.2012, 21:58   #7 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von GT43A
 
Registriert seit: 04.12.2011
Ort: Pöcking
Beiträge: 126
Standard

Hallo ich noch mal,
bei allen Dialog Fenstern (auch @Create("Window"…) wird %key auf 2 gesetzt, wie in der Hilfe beschrieben.
Zitat: Es wurde in einer Dialogbox bzw. einem Dialogfenster auf das Systemmenü doppelgeklickt, bzw. "Schließen" ausgewählt
Richtig?
Und beim %Hwnd nicht!
Richtig?
wenn JA dann kann ich mein Programm dementsprechend aufbauen.
__________________
Gerd
Windows 7 Home Premium SP1 32Bit XProfanX2 12.0B-N

Geändert von GT43A (11.01.2012 um 22:05 Uhr)
GT43A ist offline   Mit Zitat antworten
Alt 11.01.2012, 22:41   #8 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von GT43A
 
Registriert seit: 04.12.2011
Ort: Pöcking
Beiträge: 126
Standard

OK da mir dieses keiner bestätigen kann
werde ich %key beim Fenster schlissen mal 1000 m Tief ein graben.

und nur noch folgende Abfrage benutzen!

Code:
'-Begin-----------------------------------------------------------------
$H messages.ph
'-Hauptprogramm-------------------------------------------------------
Proc Ein_Dialog
  var Zeit_DLG& = @Create("Window",%Hwnd,"Test",500,40,200,200)
  var Dialog_Schleife% = 0
  WhileNot Dialog_Schleife%
    waitinput
    If %Umessage = ~wm_close
      Dialog_Schleife% = 1
    Endif
  Endwhile
  @DestroyWindow(Zeit_DLG&)
Endproc
'-Erzeuge Fenster mit----------------------------------------
WindowStyle 10
Window 40, 40 - 400, 400
Usermessages ~wm_close
While 1
  waitinput
  If (%Umessage = ~wm_close) & (&uWnd = %hWnd)
    BREAK
    Else
      Ein_Dialog
  Endif
Endwhile
Print "Schnell noch was vor'm Beenden tun"
Waitinput
'-End-------------------------------------------------------------------
End
__________________
Gerd
Windows 7 Home Premium SP1 32Bit XProfanX2 12.0B-N
GT43A ist offline   Mit Zitat antworten
Alt 11.01.2012, 22:48   #9 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 759
Standard

Wie ich oben schon geschrieben habe, mit dem Windowstyle 512 (und ich sehe gerade, da habe ich 256 geschrieben ) wird auch beim Hauptfenster %Key=2 gesetzt. Mit 256 kannst Du das Systemmenü mittels MenuItem abfragen und entsprechend reagieren. Aber leider klappt dann der Schließbutton nicht! Die Lösung mittels ~wm_Close ist auf jeden Fall vorzuziehen.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 11.01.2012, 23:40   #10 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von GT43A
 
Registriert seit: 04.12.2011
Ort: Pöcking
Beiträge: 126
Standard

Hallo Volkmar,

Zitat: Wie ich oben schon geschrieben habe, mit dem Windowstyle 512..

Zitat: Von ts-soft aber dieses Problem ist so alt wie Profan selbst, inzwischen gibt es wenigstens UserMessages, früher hat man den schließen Button disabled und das Systemmenü entfernt um MemoryLeaks zu vermeiden!

Volkmar heute doch nicht mehr, wir haben 2012

Diese elementare Fehlinformation mit %key sollte doch schnellst möglichst behoben werden, in welcher Form auch immer.
__________________
Gerd
Windows 7 Home Premium SP1 32Bit XProfanX2 12.0B-N
GT43A ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 12.01.2012, 16:20   #11 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 759
Standard

Zitat:
Zitat von GT43A Beitrag anzeigen
Volkmar heute doch nicht mehr, wir haben 2012

Diese elementare Fehlinformation mit %key sollte doch schnellst möglichst behoben werden, in welcher Form auch immer.
Eben. 2012 geschrieben und funktioniert definitiv, wie Du Dich selbst überzeugen kannst

Code:
WindowStyle 512 + 8
' zur 512 eine 8 hinzu, damit überhaupt ein Systemmenü zum Schließen vorhanden ist
CLS

While 1
  WaitInput
  If %key = 2
    Break
  EndIf
EndWhile

Print "Das wird nach Verlassen der Schleife ausgeführt"
Print "Damit Du das auch lesen kannst, folgt noch ein WaitInput"
Print "Bitte nochmal klicken zum Beenden"
WaitInput
Zum Vergleich bitte mal die Hilfe zu WindowStyle lesen und dann würde mich interessieren, wo da im Jahre 2012 oder wann auch immer eine Fehlinformation zu beseitigen wäre.
Würde es heißen, daß im (von mir zuerst fälschlicherweise angegebenen) Stil 256 was nicht klappt, dann geben ich Dir recht. Da wird wirklich der Schließbutton nicht berücksichtigt, der schließt das Fenster kommentarlos in jedem Falle ohen den Teil hinter der Schliefe auszuführen. Und dort genau liegt das Problem, was den guten Testern der Version X2 auch mal wieder durch die Lappen gegangen ist, weil das schon seit Erscheinen der ersten 32-Bit-Version so war. Und deshalb wohl jeder, der sich schon länger mit XProfan beschäftigt, sein eigenes Süppchen kocht und das Problem gar nicht mehr sieht.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 16.01.2012, 21:57   #12 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von GT43A
 
Registriert seit: 04.12.2011
Ort: Pöcking
Beiträge: 126
Standard

Hallo Volkmar,
ubs ich wollte keinen zu nahe treten.

Es wird mehrfach in der Hilfe drauf hingewiesen z.B.
Vor dem Beenden des Programmes muss das Handle mit DeleteObject wieder freigegeben werden, da ansonsten der von der Bitmap belegte Speicherplatz nicht wieder an das System zurückgegeben wird.

Und wenn ich dann am Programm Ende diesen befehle aufrufe und er wird nicht ausgeführt sehe ich als Neuling meinen PC schon in Flammen aufgehen.

Gut zu wissen das Rolland es im Visier hat.

Und dank eurer Infos und Hilfestellung ist der Feuerlöscher wieder in der Garage.

MfG
__________________
Gerd
Windows 7 Home Premium SP1 32Bit XProfanX2 12.0B-N
GT43A ist offline   Mit Zitat antworten
Alt 16.01.2012, 22:12   #13 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 759
Standard

Kein Problem. Das geschriebene Wort sieht manchmal anders aus als wenn wir Angesicht von Angesicht reden würden. Deshalb nehme ich das auch nicht alles so ernst. Und mich selbst auch nicht auch wenn ich manchmal etwas ironisch schreibe. ist dann auch nicht böse gemeint.
Und daß der Rechner in Flammen aufgeht, da mußt Du dir keine Sorgen machen. Es wird dann nur etwas Speicher nicht wieder frei gegeben. Und abhängig davon, was nicht korrekt freigegeben werden konnte, verhalten sich andere Programme dann mitunter etwas seltsam. Solche hartnäckigen Reste können dann in aller Regel nur durch Neustarten des Rechners beseitigt werden.
Und wenn in künftigen Versionen dann eine etwas bessere Methode drin ist, dann hat das Thema hier doch was gebracht

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 16.01.2012, 22:17   #14 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Ab Windows XP gibt jeder Prozess beim Beenden automatisch allen Speicher und Handles usw. frei, die er besetzt gehalten hatte. Es muss sich also heutzutage niemand einen großen Kopf machen, wenn bei Programmende mal was nicht freigegeben wird. Das oft zu unrecht gescholtene Windows macht das eh ganz automatisch!
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 16.01.2012, 22:21   #15 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Stimmt nicht ganz.
Ob alles freigegeben wird, hängt davon ab, ob es sich um globale oder lokale Handles auf das Objekt handelt. Lokale Handles sind zum Beispiel Kernelhandels - bei denen kann beim Beenden eigentlich nichts zurückbleiben. Bei globalen Handles dürfte zumindestens ein geringer Speicherbereich weiterhin in Verwendung sein.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT

Geändert von AHT (16.01.2012 um 22:28 Uhr)
AHT ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MIDI-Nachrichten abfangen Transrapidfan XProfan 6 02.12.2011 19:00
Manipulierte Nokia-Handys sollen SMS abfangen können Info Sicherheitsmeldungen von heise.de 0 22.04.2009 12:10
Nicht ladbares Bild abfangen Jac de Lad XProfan 2 14.03.2009 10:16
e-mails abfangen hilfebedürftig Windows 95/98/ME/2000/NT 5 19.09.2006 18:27
Counter Strike: Server Problem sowie Online Problem Simon@Xp Computerspiele 4 10.04.2006 14:30



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:53 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2