From: Perl R. <pe...@co...> - 2007-01-20 05:51:56
|
Hi all, I'm trying to do something that seems real simple: capture the contents (all the lines) of a text field and write them to a file. Since I can't see a more straightforward way of doing this, I wrote an algorithm that gets the number of lines in the text field, then gets each line (by its number) and writes it to the file one at a time. However, some lines are being cut off and only partially written to file. For example, if you copy/paste the following three lines into the text field, then the middle line gets cut off for no apparent reason: <tr valign="top"> <td width="45"><img alt="" src="https://www.linvert.com/miscimages/info.gif" border="0" /></td> <td> However, if you copy/paste ONLY the middle line into the textfield, then it doesn't get cut off when written to file! What's even more strange is this: if I copy/paste more lines above and below those three, then less of the middle line gets cut off, but it still gets cut off. And I've found that with some blocks of text, every line gets cut off at the same point. Needless to say, this is really weird. Below is a slimmed down version of the code that reproduces the problem every time (at least on my system). Am I doing something wrong, or is there perhaps a bug in the GetLine() function of Win32::GUI::Textfield? ################################ use strict; use Win32::GUI(); my $number; my $line_number = 0; my $w = Win32::GUI::Window->new( -size => [650,650], -resizable => 0, -hasmaximize => 0, -dialogui => 1, ); my $font = Win32::GUI::Font->new( -name => "Courier New", -size => 8, ); my $textfield = $w->AddTextfield( -multiline => 1, -size => [536,370], -pos => [54,158], -font => $font, -tabstop => 1, -background => [255,255,255], -autovscroll => 1, -vscroll => 1, -hscroll => 1, -wantreturn => 1, ); my $OK = $w->AddButton( -name => 'OK', -text => "OK", -size => [80,25], -pos => [447,582], -ok => 1, -default => 1, -tabstop => 1, ); $w->Center(); $w->Show(); Win32::GUI::Dialog(); sub OK_Click { my $file = "file.txt"; open(FILE, ">>".$file); select(FILE); $number = $textfield->GetLineCount(); while ( $line_number != $number ) { my $line = $textfield->GetLine($line_number); if ( $line_number == 0 ) { print $line; } else { print "\n" . $line; } ++$line_number; } close(FILE); $line_number = 0; } ################################ Thanks, Rob |
From: Robert M. <rm...@po...> - 2007-01-20 14:26:41
|
Perl Rob wrote: > Hi all, > > I'm trying to do something that seems real simple: capture the contents > (all the lines) of a text field and write them to a file. Since I can't > see a more straightforward way of doing this $contents = $textfield->Text(); gets all the text in one go. [snip info about Textfield::GetLine sometimes truncating lines ] > Am I doing something wrong, or is > there perhaps a bug in the GetLine() function of Win32::GUI::Textfield? The GetLine() function is (badly) broken, and I don't see any work-around. Thanks for the report, I will ensure it gets fixed in the next release. Regards, Rob. |
From: Perl R. <pe...@co...> - 2007-01-20 17:18:58
|
As always, thanks very much for the quick reply and simple solution! Glad to know I wasn't doing something "wrong". Thanks, Rob -----Original Message----- From: Robert May [mailto:rm...@po...] Sent: Saturday, January 20, 2007 7:26 AM To: Perl Rob Cc: Win32 GUI Users Mailing List Subject: Re: [perl-win32-gui-users] How can I get all the contents of a textfield? Perl Rob wrote: > Hi all, > > I'm trying to do something that seems real simple: capture the > contents (all the lines) of a text field and write them to a file. > Since I can't see a more straightforward way of doing this $contents = $textfield->Text(); gets all the text in one go. [snip info about Textfield::GetLine sometimes truncating lines ] > Am I doing something wrong, or is > there perhaps a bug in the GetLine() function of Win32::GUI::Textfield? The GetLine() function is (badly) broken, and I don't see any work-around. Thanks for the report, I will ensure it gets fixed in the next release. Regards, Rob. |