Schrift
[thread]8865[/thread]

-e bringt unterschiedliche Ergebnisse: Ursachen? (Seite 2)

Leser: 1


<< |< 1 2 >| >> 19 Einträge, 2 Seiten
pktm
 2007-03-24 00:24
#75281 #75281
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Also meine aktuelle Lösung sieht so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    if( $datei =~ m/[äöü]+/ ) {
my $d = $mw->DialogBox(-title => "Schlechtes Programm", -buttons => ["OK"]);
my $w = $d->add(
'Label',
-text => "Leider kann dieses Programm noch keine Dateien einlesen,\n"
. "deren Dateiname Umlaute enthält. Das ist ein Problem von\n"
. "Tk und ich habe keine Ahnung, wie man das behebt.\n"
. "Wer das weis möchte sich bitte die Funktion addDatei\n"
. "vorknöpfen, einen Patch schreiben und ihn mir zusenden.\n"
. "Danke.",
-justify => 'left',
)->pack();
my $button = $d->Show;
return;
}


Den Beitrag habe ich bislang leider noch nicht gefunden. Werde mal sehen, was sich da mit locale und dergleichen drehen lässt.
http://www.intergastro-service.de (mein erstes CMS :) )
GoodFella
 2007-03-24 02:57
#75282 #75282
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Waren 2. Einen davon hab ich gefunden: http://board.perl-community.de/cgi-bin....;t=3837

Der andere ist leider unauffindbar :/


Hab mal meine subs aus dem Script, dass ich gerade bearbeite rauskopiert, die funktionieren mit Umlauten, getestet:

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
use locale;
sub file_dialog
 {
  my $parent = shift;
  my @types =( ['All files',         '*'],
               ['CSV files',      '.csv'],
               ['Excel files',    '.xls'] );
  my $value = $parent->getOpenFile( -filetypes => \@types, -initialdir => '.' );
  $value =~ s/\//\\/sgi;
  utf8::downgrade($value);
  unless($value eq '')
   {
    chdir(&get_path($value));
   }
  return($value);
 }

sub save_file_dialog
 {
  my ($parent, $filename) = @_;
  my @types =( ['Excel files',    '.xls'],
               ['All files',      '*.*' ] );
  my $value = $parent->getSaveFile( -filetypes => \@types, -initialdir => '.', -initialfile => $filename);
  $value =~ s/\//\\/sgi;
  utf8::downgrade($value); 
  return($value); 
 }


.. und zusätzlich später:

Code (perl): (dl )
1
2
  utf8::downgrade($file);
  unless (-e $file) { ........



Ich finde ja, Perl sollte all das allein machen.\n\n

<!--EDIT|GoodFella|1174698275-->
ptk
 2007-03-24 09:34
#75283 #75283
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Hast du mal Tk 804.027_050 probiert? Gibt es das Problem damit noch immer?
pktm
 2007-03-24 12:04
#75284 #75284
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ich hatte vorher die Version 804.027-r6, was die neuste Version ist, die mir über ppm zur Verfügung steht. Und mit CPAN habe ich auf meinem System trotz aller guten Anleitungen noch nie ein Modul installiert bekommen, das irgendwas kompilieren muss, daher lasse ich das mal schön sein.

DIe Sache mit dem downgrade werde ich mal probieren, danke!
http://www.intergastro-service.de (mein erstes CMS :) )
pktm
 2007-03-24 23:38
#75285 #75285
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Juhu, es geht!

So sieht es jetzt aus:
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
sub getDatei {
   my $heap = shift;
   my $mw = shift;

   my $datei = $mw->getOpenFile(
       -filetypes  => $heap->{zulaessigeDateitypen},
       -initialdir => $Bin,
       -multiple   => 0,
   );

# Edit2: besser doch kein File::Spec :-/
   #$datei = File::Spec->catfile($datei);
   utf8::downgrade($datei);

   if( $datei ) {
       say "Es wurde eine Datei angegeben: [$datei]";
       
       if( -e $datei ) {
           say "Die Datei existiert";
       }else{
           say "die Datei existiert nicht!";
       }
   }
   
} # /getDatei


Edit: ganze Test-Sub gepostet\n\n

<!--EDIT|pktm|1174773190-->
http://www.intergastro-service.de (mein erstes CMS :) )
Strat
 2007-03-25 15:46
#75286 #75286
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich verwende für die Konvertierung von relativen oder auch absoluten Dateinamen in "Windows-Dateinamen" meist die folgende Win32-Funktion:
Code: (dl )
1
2
use Win32; # wird bei ActivestatePerl sowieso geladen
$fileWin = Win32::GetFullPathName( $file );

funktioniert's damit besser?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
GoodFella
 2007-03-25 17:04
#75287 #75287
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
[quote=Strat,25.03.2007, 13:46]Ich verwende für die Konvertierung von relativen oder auch absoluten Dateinamen in "Windows-Dateinamen" meist die folgende Win32-Funktion:
Code: (dl )
1
2
use Win32; # wird bei ActivestatePerl sowieso geladen
$fileWin = Win32::GetFullPathName( $file );

funktioniert's damit besser?[/quote]
Ich hab gerade das ChangeLog von Perl 5.8.8 819 -> 820 gelesen und vorher den Beitrag hier.. Dachte mir ich poste was ich da genau über diese Funktion gelesen habe, vielleicht ist es hilfreich:

Quote
Win32::GetFullPathName() will return a short name, if necessary. Call Win32::GetLongPathName() on the return value (in scalar context) to get the full pathname in Unicode:

Wie gesagt, erst ab 5.8.8.820 :)
Strat
 2007-03-25 17:19
#75288 #75288
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
das ist hilfreich, danke
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
GoodFella
 2007-03-26 00:32
#75289 #75289
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Achja, ich hab den zweiten Thread gefunden; der ist vom Inhalt her fast identisch zu diesem:

http://board.perl-community.de/cgi-bin....;t=3646
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2007-03-22 22:43.