Schrift
[thread]12873[/thread]

Inhalt einer vom User hochgeladenen Textdatei in einer Listbox anzeigen

Leser: 1


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Newbie2008
 2008-12-07 16:20
#116915 #116915
User since
2008-12-05
26 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte über ein Eingabefeld eine Textdatei vom User hochladen lassen, den Inhalt in einer Listbox anzeigen und ändern lassen, einen neuen Ausgabedateinamen vergeben lassen und die geänderten Daten unter diesem Namen abspeichern. Dann soll noch eine Erfolgsmeldung kommen.

Soweit das Ziel.

Ich habe die grafische Oberfläche bereits geschaffen:


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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/perl -w
use strict;

use Tk;


my $haupt = new MainWindow;

my $links = $haupt->Frame();
$links->Label("-text"=> "Einzulesende Textdatei: ")->pack();
my $edatei = $links->Entry();
$edatei->pack();

my $eschalter = $links->Button(-text=>"Datei einlesen",
-command=> \&einlesen
)->pack();


my $rechts = $haupt->Frame();

$rechts->Label(-text=>"Text:")->pack();
my $daten = $rechts ->Listbox();
$daten->pack();

$rechts->Label(-text=>"Name unter dem die geänderte Datei gespeichert werden soll:")->pack();
my $adatei = $rechts->Entry();
$adatei->pack();

my $aschalter = $rechts->Button(-text=>"Datei abspeichern",
-command=> \&abspeichern
)->pack();

$rechts->Label(-text=>"Statusmeldung:")->pack();
my $status = $rechts ->Listbox();
$status->pack();


$links->pack(-side=>"left");
$rechts->pack(-side=>"right");

MainLoop();

}


Wie schaffe ich es, dass eine Datei vom User angegeben wird, auf Klick eingelesen und im Listbox ausgegeben wird?

Kann mir jemand helfen???
#Kein Kommentar
 2008-12-07 17:58
#116927 #116927
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
was meinst du mit in eine listbox eingelesen wird? wieso nimmst du kein textfeld?

die routine &einlesen könne dann ungefähr so aussehen:

Code (perl): (dl )
1
2
3
4
5
6
7
sub einlesen{
    open(FILE, $file) || die "Can't open the file $file: $!";
    foreach my $line (<FILE>){
        $textfield->insert('end', $line."\n");
    }
    close FILE;
}
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Newbie2008
 2008-12-07 18:09
#116930 #116930
User since
2008-12-05
26 Artikel
BenutzerIn
[default_avatar]
Die Aufgabenstellung bezieht sich auf eine Listbox.
Newbie2008
 2008-12-07 18:16
#116931 #116931
User since
2008-12-05
26 Artikel
BenutzerIn
[default_avatar]
Danke für deinen Tipp.

In deinem Skript in Zeile 2 verwendest du die Variable "$file". Ersetze ich diese durch meine Variable $edatei aus Zeile 11 meines Skriptes?

Wenn ich dies tue bekomme ich die Fehlermeldung "Datei konnte nicht geöffnet werden - Invalid argument ... tk callback for frame.button" wenn ich eine Textdatei mit Pfad (z.B. c:/perl/skript/test.txt) in das Eingabefeld schreibe.
Struppi
 2008-12-07 18:44
#116933 #116933
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
$datei ist kein Name einer Datei, sondern der Handle für den Button, du musst dir natürlich den Inhalt rausziehen, z.b. mit der get() Methode.
renee
 2008-12-07 19:00
#116936 #116936
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht hilft Dir auch http://wiki.perl-community.de/bin/view/Wissensbasi... weiter...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Newbie2008
 2008-12-08 20:15
#116989 #116989
User since
2008-12-05
26 Artikel
BenutzerIn
[default_avatar]
Hey super,

das sieht gut aus. Da kämpfe ich mich dann mal durch.

Danke zunächst
Newbie2008
Newbie2008
 2008-12-10 13:57
#117042 #117042
User since
2008-12-05
26 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich finde leider den Fehler nicht, warum meine "Meldungen" $hashref->{message] nicht funktionieren ...


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
sub einlesen{
     my ($list,$hashref) = @_;
    
    if(defined $hashref->{input} && defined $hashref->{output}){
        if(open(my $fh,'<',$hashref->{input}) && 
           open(my $w_fh,'>',$hashref->{output})){
            while(my $line = <$fh>){
                print $w_fh $. . " " . $line;
                chomp $line;
                $list->insert('end', $. . " " . $line);
            }
            close $fh;
            close $w_fh;
            $hashref->{message} = 'Die Ausfuehrung war erfolgreich!';
        }
        else{
            $hashref->{message} = 'Die Ausfuehrung war nicht erfolgreich';
        }
    }
    else{
        $hashref->{message} = 'Bitte legen Sie eine Eingabe- und eine Ausgabedatei fest:';
    }
}


Hat jemand eine Idee????
Struppi
 2008-12-10 15:02
#117044 #117044
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Was heißt deine Meldung funktioniert nicht? Was soll da funktioneren?
Newbie2008
 2008-12-10 18:03
#117055 #117055
User since
2008-12-05
26 Artikel
BenutzerIn
[default_avatar]
Ich bekomme weder die Meldung, dass die Ausführung (nicht) erfolgreich war oder wenn keine Dateien ausgewählt worden sind, dass diese angegeben werden müssen. (Zeile 14, 17, 21)
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2008-12-07 16:20.