Autor | Thema: Probleme beim 2. Start einer Prozedur | | 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?)
|
| | 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
|
| | Datum:01.06.02 16:59 
(webmaster@rokosoft.de) | |
Ohh hab nicht richtig gekuckt - Du hast ja dispose size#
Sorry
Rolf
|
| | 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
|
| | | 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
|
|
|