Schrift
[thread]8939[/thread]

PAR - Probleme



<< >> 9 Einträge, 1 Seite
GoodFella
 2007-04-24 02:33
#76149 #76149
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Hi,
ich könnte jetzt viel mehr schreiben, habe nen Installations-Entfernen-Testen-Marathon hinter mir; Standard-PAR funktioniert ja auf Win seit einigen Perl-Versionen wg. Placeholder bla Prozedureinsprungpunkt blub nicht mehr, kennt ihr bestimmt.

Lösung war dann
ppm install http://theoryx5.uwinnipeg.ca/ppms/PAR-588.ppd for (PAR-0.92)
ppm install http://theoryx5.uwinnipeg.ca/ppms/PAR.ppd for (PAR-0.91)
ppm install http://theoryx5.uwinnipeg.ca/ppms/PAR-587.ppd for (PAR-0.90)

bzw. letzteres, weil die anderen auch nicht gingen + Pfad zu pp zu den Umgebungsvars hinzuzufügen. Hier mal noch die relevanten Infos zu Versionen etc. => http://flux.pldsecurity.de/par.JPG

Soweit geht ja auch alles. Wird kompiliert und oberflächlich betrachtet ging auch alles, was ich getestet habe. Bin dann zur Arbeit und habe noch die letzten Dinge getestet und plötzlich - die Funktion, die Daten aus einer Exceltabelle holt (per Win32::OLE) und Platzhalter durch jene ersetzt, geht nicht mehr = es passiert nichts. Gleich den Originalcode angeschmissen = perl script.pl ausgeführt - da geht es wie erwartet. Entsetzen - wenn das so willkürlich auftritt - wo tut es das noch?

Hat jemand ähnliche Erfahrungen gemacht?
Hat jemand eine Idee, woran das liegen könnte?
Weiss jemand eine Alternative zu PAR ohne solche Kinderkrankheiten?

Ich hätte ja Code gepostet, aber da dieser wie bereits erwähnt per Interpreter funktioniert, kann es ja nicht daran liegen.

Gruss

Pete
Sucher
 2007-04-25 01:51
#76150 #76150
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Hallo,

vielleicht fehlt dir nur eine .dll ? Also zum Beispiel PERLDIR\lib\auto\Win32\OLE.dll
ins Arbeitsverzeichnis kopieren und beim Aufruf von pp mit -l OLE.dll bekannt machen.

Grüße
Strat
 2007-04-26 12:31
#76151 #76151
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
hast du das archiv mit der option --gui erstellt? wenn ja, lass die mal weg, dann muesstest du fehlermeldungen sehen.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
GoodFella
 2007-04-26 20:26
#76152 #76152
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
@Sucher: Hat leider nicht den geringsten Effekt.
@Strat: Ich habe es ausprobiert - keine Fehlermeldung - keine Warnung.


Habe noch einen Screenshot gemacht, es geht um das Verhalten wenn man auf den <<abc>> Button clickt, hier erstmal der Code dazu (zusammenkopiert):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
sub update_sample_data
 {
   my ($text_display, $text_data, $start_data, $end_data, $sheet, $nr, @headlines) = @_;
   my $display_text = $text_data->get("0.0", "end");
   $display_text =~ s/$start_data([^$end_data]+?)$end_data/$sheet->Range(&get_a1($nr, &array_index($1, @headlines)))->{Value}/sgei;     
   $text_display->delete("0.0", "end");
   $text_display->insert("end", $display_text);
 }


my $btn_show =    $combi_window->Button( -text => $start_data.' abc '.$end_data, -font => ['Tahoma', 8, 'bold'], -width => 7 );
$btn_show->configure ( -command => sub { &update_sample_data($text_display, $text_data, $start_data, $end_data, $sheet, $nr, @headlines); } );


und hier der Screenshot: http://flux.pldsecurity.de/par2.JPG
GoodFella
 2007-04-27 05:19
#76153 #76153
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
So, ich habe das Problem einkreisen können; wider meinen Erwartungen lag das Problem nicht bei Win32::OLE, sondern bei einem Regex, der allerdings völlig korrekt ist.

Hier mein Testcode:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
&debug('init');
sub update_sample_data
 {
   my ($text_display, $text_data, $start_data, $end_data, $sheet, $nr, @headlines) = @_;
   my $display_text = $text_data->get("0.0", "end");

   &debug("display_text->isutf8 = ".(utf8::is_utf8($display_text) ? 1 : 0));
   &debug("start_data->isutf8 = ".(utf8::is_utf8($start_data) ? 1 : 0));
   &debug("end_data->isutf8 = ".(utf8::is_utf8($end_data) ? 1 : 0));
   &debug("display_text =\n$display_text");
   &debug("start_data= '$start_data'");
   &debug("end_data= '$end_data'");
   if ($display_text =~ /$start_data([^$end_data]+?)$end_data/si)
    {
     &debug('FOUND')
    }
   else
    {
     &debug("NOT FOUND")
    }

   $display_text =~ s/$start_data([^$end_data]+?)$end_data/$sheet->Range(&get_a1($nr, &array_index($1, @headlines)))->{Value}/sgei;
   $text_display->delete("0.0", "end");
   $text_display->insert("end", $display_text);
 }


Ausgabe nach Ausführung per Commmandline:

Quote
display_text->isutf8 = 1
start_data->isutf8 = 0
end_data->isutf8 = 0
display_text =
«Vorname»

start_data= '«'
end_data= '»'
FOUND


Ausgabe nach Ausführung einer mit PAR erstellten .EXE:

Quote
display_text->isutf8 = 1
start_data->isutf8 = 0
end_data->isutf8 = 0
display_text =
«Vorname»

start_data= '«'
end_data= '»'
NOT FOUND


..ich habe jetzt allerdings nichtmal einen Ansatz, wie dieses Ergebnis zustande kommt. Ihr vielleicht?
GoodFella
 2007-04-27 05:20
#76154 #76154
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Doppelpost: Bitte löschen.\n\n

<!--EDIT|GoodFella|1177636946-->
GoodFella
 2007-04-27 05:31
#76155 #76155
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Test 2:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
sub update_sample_data
 {
   my ($text_display, $text_data, $start_data, $end_data, $sheet, $nr, @headlines) = @_;
   my $display_text = $text_data->get("0.0", "end");

   &debug("display_text->isutf8 = ".(utf8::is_utf8($display_text) ? 1 : 0));
   &debug("start_data->isutf8 = ".(utf8::is_utf8($start_data) ? 1 : 0));
   &debug("end_data->isutf8 = ".(utf8::is_utf8($end_data) ? 1 : 0));
   &debug("display_text =\n$display_text");
   &debug("start_data= '$start_data'");
   &debug("end_data= '$end_data'");
   if ($display_text =~ /$start_data([^$end_data]+?)$end_data/si)
    {
     &debug('FOUND')
    }
   else
    {
     &debug("NOT FOUND")
    }
   my $test = '';
   &debug('start_data = '.ord($start_data));
   &debug('end_data = '.ord($end_data));
   for(split(//,$display_text)) { $test .= "$_ = ".ord($_).", "; }
   &debug('Einzelzeichen = '.$test);

   $display_text =~ s/$start_data([^$end_data]+?)$end_data/$sheet->Range(&get_a1($nr, &array_index($1, @headlines)))->{Value}/sgei;
   $text_display->delete("0.0", "end");
   $text_display->insert("end", $display_text);
 }


Ausgabe CMD:

Quote
display_text->isutf8 = 1
start_data->isutf8 = 0
end_data->isutf8 = 0
display_text =
«Vorname»

start_data= '«'
end_data= '»'
FOUND
start_data = 171
end_data = 187
Einzelzeichen = « = 171, V = 86, o = 111, r = 114, n = 110, a = 97, m = 109, e = 101, » = 187,
= 10,


Ausgabe PAR:

Quote

display_text->isutf8 = 1
start_data->isutf8 = 0
end_data->isutf8 = 0
display_text =
«Vorname»

start_data= '«'
end_data= '»'
NOT FOUND
start_data = 171
end_data = 187
Einzelzeichen = « = 171, V = 86, o = 111, r = 114, n = 110, a = 97, m = 109, e = 101, » = 187,
= 10,



..identische Daten, verschiedene Ergebnisse. Hrrmmz.\n\n

<!--EDIT|GoodFella|1177638157-->
GoodFella
 2007-04-27 05:40
#76156 #76156
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
so, ein weiterer Test ergab folgendes:

Hinzufügen der Zeile
Code (perl): (dl )
 utf8::downgrade($display_text);

lässt die Dinge so funktionieren wie sie funktionieren sollen.
So, dass heisst:
mein Perl Interpreter interessiert sich scheinbar in diesem Fall nicht für die Kodierung, der in PAR enthaltene aber schon.
Wie kommt das?

[EDIT] Ist wohl doch nicht das einzige, was nicht funktioniert: An anderer Stelle befinden sich nach PAR-Kompilierung plötzlich keine Daten in einer Datenstruktur, die ohne PAR korrekt gefüllt ist (und da das Befüllen auf Regexe verzichtet, ist es wohl ein völlig anderes Problem).

.. und wer weiss wo noch solche verborgenen Fehler lauern?! Also wenn das nicht irgendwie durch einen switch o.ä. zu ändern ist, muss ich mich wohl nach Alternativen zu PAR umsehen.\n\n

<!--EDIT|GoodFella|1177640466-->
ptk
 2007-04-27 22:26
#76157 #76157
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Weil du utf8 erwähnst: wenn du mit Unicode arbeitest, braucht Perl bei einigen Operation (z.B. Regexp-Matches mit Klassen) zusätzliche Dateien, die vielleicht nicht automatisch eingebunden wurden. strace/truss/ktrace hilft:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
truss perl -e '$x="\x{20ac}"; $x =~ m{\w}' |& grep '^open'
open("/etc/libmap.conf",0x0,0666) = 3 (0x3)
open("/usr/local/lib/perl5/5.8.8/mach/CORE/libperl.so",0x0,00) = 3 (0x3)
open("/var/run/ld-elf.so.hints",0x0,044) = 3 (0x3)
open("/lib/libm.so.4",0x0,027757760070) = 3 (0x3)
open("/lib/libcrypt.so.3",0x0,027757760070) = 3 (0x3)
open("/lib/libutil.so.5",0x0,027757760070) = 3 (0x3)
open("/lib/libc.so.6",0x0,027757760070) = 3 (0x3)
open("/usr/share/locale/de_DE.ISO8859-1/LC_COLLATE",0x0,0666) = 3 (0x3)
open("/usr/share/locale/de_DE.ISO8859-1/LC_CTYPE",0x0,0666) = 3 (0x3)
open("/usr/share/locale/de_DE.ISO8859-1/LC_MONETARY",0x0,05001220541) = 3 (0x3)
open("/usr/share/locale/de_DE.ISO8859-1/LC_NUMERIC",0x0,043) = 3 (0x3)
open("/usr/share/locale/de_DE.ISO8859-1/LC_TIME",0x0,06) = 3 (0x3)
open("/usr/share/locale/de_DE.ISO8859-1/LC_MESSAGES",0x0,0557) = 3 (0x3)
open("/dev/urandom",0x0,05001162001) = 3 (0x3)
open("/dev/null",0x0,0666) = 3 (0x3)
open("/usr/local/lib/perl5/5.8.8/utf8.pm",0x0,0666) = 3 (0x3)
open("/usr/local/lib/perl5/5.8.8/utf8_heavy.pl",0x0,0666) = 3 (0x3)
open("/usr/local/lib/perl5/5.8.8/strict.pm",0x0,0666) = 4 (0x4)
open("/usr/local/lib/perl5/5.8.8/warnings.pm",0x0,0666) = 4 (0x4)
open("/usr/local/lib/perl5/5.8.8/Carp.pm",0x0,0666) = 5 (0x5)
open("/usr/local/lib/perl5/5.8.8/Exporter.pm",0x0,0666) = 5 (0x5)
open("/usr/local/lib/perl5/5.8.8/unicore/PVA.pl",0x0,0666) = 3 (0x3)
open("/usr/local/lib/perl5/5.8.8/unicore/Exact.pl",0x0,0666) = 3 (0x3)
open("/usr/local/lib/perl5/5.8.8/unicore/lib/gc_sc/Word.pl",0x0,0666) = 3 (0x3)
<< >> 9 Einträge, 1 Seite



View all threads created 2007-04-24 02:33.