From: Marjolein K. <win...@ja...> - 2001-05-10 09:16:22
|
Chris, Forgive me if I sound pedantic - but here's some advice from an old hand (slightly rheumatic by now - seriously!) at programming. If you want to find out the hard way (may do!) delete this *now*; don't read any further. On the other hand...: Do *not* hide that DOS (command-line) window until you've fully debugged, alpha-tested and beta-tested your program. Until it's ready for release, you *need* that command-line window. Unless you want (or can afford to) to shell out for a debugger - but you don't *need* (to shell out for) a debugger until you've exhausted all other methods. (When I was starting to writing COBOL there *were* no 'debuggers'. Debugging your code was inserting as many useful DISPLAY statements you could think of and then interpreting the text on the print-out you got back.) I have a debugger for Perl (Part of ActiveState's PDK, which costs $$$) but I rarely use it. I use the command-line window to display my "display" statements (plain old print in Perl) until I'm really stuck. If you want to know what goes on in your script, keep that window, and put liberal [print] statements into your code to trace every step: you're robbing yourself of a valuable resource until your code is really working (and confirmed as really working by people using your code). They'll give you a trace of what's happening, and a means of finding problems - well before you'll even *need* a debugger (or this list, for that matter). Leave your print statements (and code variations!) but 'comment them out' while you're trying to figure out something. Once it works, put in a new comment that explains (to you, 6 months later!) why it works. When you can still understand that comment after a week, your're ready to deleted the other commented-out trial-and-error code. If not, go back and explain it to yourself again (if you can still remember why this worked in the first place and something else didn't!); in a comment. And don't under-estimate the life-time of your code: trivial code intended for a week or so has a nasty habit of staying alive for 2 years or more... Debuggers are a wonderful invention - and I use them. But you don't need them (need to *pay* for them!) until you've exhausted all possibilities of displaying traces and variable values of your program while it's executing. With Perl on Win - that's just what you need your command-line window for: without it (or a debugger): how do you know what's happening? My Perl scripts (until ready for release) look really 'dirty' until they're working: they're full of comments of what I'm trying (commented code), and why, and why it doesn't work so what I'm trying next. So try a few things, put in some print statements, and if your code doesn't work as you intended and you figured out why, put that into a comment as well. Ultimately you'll end up with working code, and comments explaining (to you!) why this works and something else you tried doesn't. (OK, I didn't even try your code - I just noticed you disabled the very means of finding out why it didn't work in the first place. IGNORE if you're not interested!) At 13:23 2001-05-09 -0500, Chris Etzel wrote: >Hello, > >I am playing around with Win32::GUI trying to refresh my memory on Perl and >Win32::GUI, and: > >I have written a test program that basically brings up a toolbar with a >button to open a launcher window that I can type a command in and launch >directly. Well, all works fine exept I can't see the text field. I even >tried to copy and paste from my working example directly to the new code, >but still no text field. Before I go insane, can someone look at this code >and tell me if I messed up somewhere? Thanks! > >Chris > >----------code below-------------- > >use Win32::GUI; >($DOS) = Win32::GUI::GetPerlWindow(); > Win32::GUI::Hide($DOS); > >my $Toolbar=Win32::GUI::Window->new( > -name=>'Toolbar', > -size=>[600,75], > -title=>"PEaRL ToolBar", > ); >my $launcher=$Toolbar->AddButton( > -name=>'launcher', > -pos=>[10,10], > -text=>"Launcher", > ); >$Toolbar->launcher->Show(); > > sub launcher_Click{ > my $Launcher=Win32::GUI::Window->new( > -name=>'CommandLauncher', > -size=>[300,75], > -title=>"Launcher", > ); > $Launcher->Show(); > > my $runline=$Launcher->AddTextField( > -name=>'CommandBox', #Here is >where It should show the text field-but doesn't > -background=>[255,255,255], > -pos=>[10,10], > -size=>[150,22], > -prompt=>'Enter Command:', > ); > > my $runButton-$Launcher->AddButton( > -name=>'runbutton', > -pos=>[160,10], > -text=>'Run', > -size=>[30,22], > ); > $Launcher->runbutton->Show(); > sub runButton_Click{ > exec($textfield->Text); > } > > } > > > > >$Toolbar->Show(); >Win32::GUI::Dialog(); > > > > >_______________________________________________ >Perl-Win32-GUI-Users mailing list >Per...@li... >http://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users Cheers, Marjolein Katsma HomeSite Help - http://hshelp.com/ - Extensions, Tips and Tools |
From: Tom P. <tom...@co...> - 2001-05-15 09:41:29
|
On 10 May 01, at 11:16, Marjolein Katsma wrote: > Debuggers are a wonderful invention - and I use them. But you don't > need them (need to *pay* for them!) until you've exhausted all > possibilities of displaying traces and variable values of your program > while it's executing. With Perl on Win - that's just what you need > your command-line window for: without it (or a debugger): how do you > know what's happening? my 2c (pretty useless AUDs but...): i would have to disagree pretty whole-heartedly with that (in the most friendly, constructive way i can manage :). I think almost the opposite attack should be tried. learn to use the debugger and use that first. if you can't get the debugger to give the information you require, THEN put in trace statements etc. the debugger has the wonderful benefit of not requiring any extra code to run, no modifications to code, no extra errors and no weird side effects. well almost. also, you can watch variables and expressions that seemed obvious when writing the code but now mysteriously don't work... a nice tip i read somewhere, was to always run the code through the debugger the first few times you run it (literally) to make sure it does what you think. very rarely do you spend hours on a problem when you point the debugger at it first. admittedly debuggers used to be too hard to use and way too much effort (gdb anyone?). but the current crop of visual debuggers are fantastic (eg VC++). the debugger in the activestate PDK is well worth the download, and seems to work for a fair while without costing anything :). - Tom (who wishes he'd learnt how to use the debugger -- and there'd been decent debuggers -- before he learnt to program, it would have saved me year's by now...) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tompaton (at) connect (dot) net (dot) au http ... people.connect.net.au/~tompaton |
From: Chris E. <ce...@mi...> - 2001-05-10 13:27:21
|
I found it. I had AddTextField instead of AddTextfield. Correct caps are not my strong point apparently, but I imagine learning them would prevent further headaches! Thanks for the debugging tips. They came in handy when trying to find the problem. ----- Original Message ----- From: "Marjolein Katsma" <win...@ja...> To: <per...@li...>; <per...@li...> Sent: Thursday, May 10, 2001 4:16 AM Subject: Re: [perl-win32-gui-users] weird textfield issue > Chris, > > Forgive me if I sound pedantic - but here's some advice from an old hand (slightly rheumatic by now - seriously!) at programming. If you want to find out the hard way (may do!) delete this *now*; don't read any further. > On the other hand...: > > Do *not* hide that DOS (command-line) window until you've fully debugged, alpha-tested and beta-tested your program. Until it's ready for release, you *need* that command-line window. > > Unless you want (or can afford to) to shell out for a debugger - but you don't *need* (to shell out for) a debugger until you've exhausted all other methods. > (When I was starting to writing COBOL there *were* no 'debuggers'. Debugging your code was inserting as many useful DISPLAY statements you could think of and then interpreting the text on the print-out you got back.) I have a debugger for Perl (Part of ActiveState's PDK, which costs $$$) but I rarely use it. I use the command-line window to display my "display" statements (plain old print in Perl) until I'm really stuck. > > If you want to know what goes on in your script, keep that window, and put liberal [print] statements into your code to trace every step: you're robbing yourself of a valuable resource until your code is really working (and confirmed as really working by people using your code). They'll give you a trace of what's happening, and a means of finding problems - well before you'll even *need* a debugger (or this list, for that matter). Leave your print statements (and code variations!) but 'comment them out' while you're trying to figure out something. Once it works, put in a new comment that explains (to you, 6 months later!) why it works. When you can still understand that comment after a week, your're ready to deleted the other commented-out trial-and-error code. If not, go back and explain it to yourself again (if you can still remember why this worked in the first place and something else didn't!); in a comment. > > And don't under-estimate the life-time of your code: trivial code intended for a week or so has a nasty habit of staying alive for 2 years or more... > > Debuggers are a wonderful invention - and I use them. But you don't need them (need to *pay* for them!) until you've exhausted all possibilities of displaying traces and variable values of your program while it's executing. With Perl on Win - that's just what you need your command-line window for: without it (or a debugger): how do you know what's happening? > > My Perl scripts (until ready for release) look really 'dirty' until they're working: they're full of comments of what I'm trying (commented code), and why, and why it doesn't work so what I'm trying next. > So try a few things, put in some print statements, and if your code doesn't work as you intended and you figured out why, put that into a comment as well. Ultimately you'll end up with working code, and comments explaining (to you!) why this works and something else you tried doesn't. > > (OK, I didn't even try your code - I just noticed you disabled the very means of finding out why it didn't work in the first place. IGNORE if you're not interested!) > > At 13:23 2001-05-09 -0500, Chris Etzel wrote: > >Hello, > > > >I am playing around with Win32::GUI trying to refresh my memory on Perl and > >Win32::GUI, and: > > > >I have written a test program that basically brings up a toolbar with a > >button to open a launcher window that I can type a command in and launch > >directly. Well, all works fine exept I can't see the text field. I even > >tried to copy and paste from my working example directly to the new code, > >but still no text field. Before I go insane, can someone look at this code > >and tell me if I messed up somewhere? Thanks! > > > >Chris > > > >----------code below-------------- > > > >use Win32::GUI; > >($DOS) = Win32::GUI::GetPerlWindow(); > > Win32::GUI::Hide($DOS); > > > >my $Toolbar=Win32::GUI::Window->new( > > -name=>'Toolbar', > > -size=>[600,75], > > -title=>"PEaRL ToolBar", > > ); > >my $launcher=$Toolbar->AddButton( > > -name=>'launcher', > > -pos=>[10,10], > > -text=>"Launcher", > > ); > >$Toolbar->launcher->Show(); > > > > sub launcher_Click{ > > my $Launcher=Win32::GUI::Window->new( > > -name=>'CommandLauncher', > > -size=>[300,75], > > -title=>"Launcher", > > ); > > $Launcher->Show(); > > > > my $runline=$Launcher->AddTextField( > > -name=>'CommandBox', #Here is > >where It should show the text field-but doesn't > > -background=>[255,255,255], > > -pos=>[10,10], > > -size=>[150,22], > > -prompt=>'Enter Command:', > > ); > > > > my $runButton-$Launcher->AddButton( > > -name=>'runbutton', > > -pos=>[160,10], > > -text=>'Run', > > -size=>[30,22], > > ); > > $Launcher->runbutton->Show(); > > sub runButton_Click{ > > exec($textfield->Text); > > } > > > > } > > > > > > > > > >$Toolbar->Show(); > >Win32::GUI::Dialog(); > > > > > > > > > >_______________________________________________ > >Perl-Win32-GUI-Users mailing list > >Per...@li... > >http://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > > > Cheers, > > Marjolein Katsma > HomeSite Help - http://hshelp.com/ - Extensions, Tips and Tools > > > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > http://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users |
From: Marjolein K. <win...@ja...> - 2001-05-10 19:15:24
|
Chris, At 20:38 2001-05-09 -0500, Chris Etzel wrote: >I found it. Great! > I had AddTextField instead of AddTextfield. Correct caps are not >my strong point apparently, but I imagine learning them would prevent >further headaches! You know, I do that *all* the time ;-) It's just part of learning how to use this great package. >Thanks for the debugging tips. They came in handy when trying to find the >problem. That's just the general stuff that will basically apply to any programming language. There are some Perl-specific tricks. Have you tried 'use strict;' yet? Cheers, Marjolein Katsma HomeSite Help - http://hshelp.com/ - Extensions, Tips and Tools |
From: Johan L. <jp...@bo...> - 2001-05-11 03:44:45
|
There is now a Win32::GUI::DragDrop module available at http://www.bahnhof.se/~johanl/perl/Win32GUI/ There is a complete example/demo program in the POD if you would like to take the trouble to rebuild your Win32::GUI module. There is also a new version of Perl Oasis which, of course, contains drag-n-drop support (and if you use the binary you won't need to rebuild Win32::GUI). Another nice feature is a useful toolbar floating on top of UltraEdit when you edit your code. Read all about it here: http://www.bahnhof.se/~johanl/perl/Oasis/ /J -- Johan Lindström, Sourcerer, Boss Casinos Ltd, Antigua jp...@bo... |
From: Hirosi T. <ta...@se...> - 2001-05-11 04:57:57
|
> There is now a Win32::GUI::DragDrop module available at > > http://www.bahnhof.se/~johanl/perl/Win32GUI/ > > There is a complete example/demo program in the POD if you would like to > take the trouble to rebuild your Win32::GUI module. I've just tried. The demo program in the POD printed, "Initial state : accepts drops: 0", and memory vioration occured, says, pgm 0x01d61c6a accessed 0x00000000, cann't become as read... (this is really in Japanese) I'm using ActivePerl Build 626 in Win2K pro. I inserted "case WM_DROPFILES" after GUI.xs, line 1839: as instructed, nmake, nmake install. re-boot machine, execute the demo program. Any help? -- Hirosi Taguti ta...@se... |
From: Johan L. <jp...@bo...> - 2001-05-11 13:11:22
|
Hirosi Taguti wrote: >I've just tried. > >The demo program in the POD printed, >"Initial state : accepts drops: 0", >and memory vioration occured, says, >pgm 0x01d61c6a accessed 0x00000000, cann't become as read... That's weird. I just call the DragAcceptFiles() function to tell the window that it's able to accept drops. That far in the program the GUI.xs patch isn't used, so that shouldn't have anything to do with it. Maybe I didn't prototype the API call correctly or something. I'll look into this today or during the weekend. /J -- Johan Lindström, Sourcerer, Boss Casinos Ltd, Antigua jp...@bo... |