Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 242928 (4364)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Probleme beim 2. Start einer Prozedur
Martin Pohl
| Datum:01.06.02 15:43 (bananenfresser@msn.com) |
Hallo! Ich habe ein Fenster mit einem Menü. Wenn ich den Menüpunkt "Notizzettel" anklicke soll er die Prozedur notizzettel ausführen. Das klappt auch. Ist die Prozedur fertig, dann bin ich wieder in dem Hauptpprogramm. Will ich die Prozedur dann wieder starten, dann sagt er mir, dass es nicht ausrechíchend DIMensioniert ist. Warum? Wie kann ich den Fehler beseitigen? Hier ist der Code für die Prozedur: proc notizzettel declare _ende%,_dlg%,notizblock%,notiz$,size#,nr%,max%,x%,y% let x%=@div(%maxx,2) let x%=@sub(x%,201) let y%=@div(%maxy,2) let y%=@sub(y%,150) let _dlg%=@createdialog(%Hwnd,"Kleiner Helper - Notizzettel",x%,y%,402,300) let notizblock%=@createmultiedit(_dlg%,"",0,0,392,-264) dim size#,@add(@filesize("notiz.txt"),2000) ReadText size#,"notiz.txt" @sendmessage(notizblock%,$000C,0,size#) dispose size# let _ende% = 0 whilenot _ende% waitinput if @equ(%key,2) assign #1,"notiz.txt" rewrite #1 let nr%=0 let max%=@getlinecount(notizblock%) whilenot @gt(nr%,max%) print #1,@getline$(notizblock%,nr%) inc nr% wend close #1 let _ende% = 1 endif wend @destroywindow(_dlg%) endproc Danke im Vorraus! MFG MPSD - Martin Pohl Software Development (klingt gut, wa?)
Rolf Koch
| Datum:01.06.02 16:54 (webmaster@rokosoft.de) |
Hi auf jedenfall solltest Du: inc nr% wend dispose size# close #1 das dispose size# einfügen, um den Speicher wieder freizugeben. (Vielleicht liegts daran) und am besten immer Dateiangaben GROSS schreiben "NOTIZ.TXT" - dies hat aber nichts mit Deinem Problem zu tun. Hoffe es klappt Rolf
Rolf Koch
| Datum:01.06.02 16:59 (webmaster@rokosoft.de) |
Ohh hab nicht richtig gekuckt - Du hast ja dispose size# Sorry Rolf
Thorsten
| Datum:01.06.02 17:19 (mrk@mrk-soft.de) |
>declare _ende%,_dlg%,notizblock%,notiz$,size#,nr%,max%,x%,y% ^^^^^^^ Bereichsvariablen NIE in einer Prozedure definieren, diese MÜSSEN IMMER an Anfang des Programms, und sind somit LOKAL für ALLLE verfügbar. declare size# proc notizzettel declare _ende%,_dlg%,notizblock%,notiz$,nr%,max%,x%,y% .... Thorsten www.mrk-soft.de
Martin Pohl
| Datum:01.06.02 17:19 (bananenfresser@msn.com) |
Das habe ich auch gerade herausgefunden. aber trotzdem danke.
Jörg Sellmeyer
| Datum: 03.06.02 00:25 (joerse@gmx.de) |
Hallo Martin, Du darfst die Bereichsvariable size# nicht innerhalb der Prozedur deklarieren. Das sagt die Hilfe dazu: "Bereichsvariablen sind immer GLOBAL und dürfen nur außerhalb von Prozeduren deklariert werden." Dann sollte es funktionieren. Gruß Jörg

| Zurück zur Übersicht