Inhalt aus Textfeld löschen
Julia
- perl
0 TorstenA
Hallo,
als Perl-Newbie bräuchte ich mal etwas Unterstützung von Euch:
Wie kann ich vor dem Laden einer Datei in ein Textfeld überprüfen, ob dieses leer ist und falls nicht zuerst den alten Text löschen bevor der neue Text (insert) hineingeschrieben wird?
Beim Laden der Datei füge ich eine autom. fortlaufende Numerierung am Zeilenanfang ein. Beim Speichern soll diese Numerierung aber nicht gespeichert werden. Kann man die Numerierung mit einer foreach-Schleife ersetzen ?
Danke schon mal.
Gruß
Julia
Hi Julia,
- Wie kann ich vor dem Laden einer Datei in ein Textfeld überprüfen, ob dieses leer ist und falls nicht zuerst den alten Text löschen bevor der neue Text (insert) hineingeschrieben wird?
Wie bekommst du den Inhalt der (Text?)Datei in das Textfeld (meinst du eine textarea?).
- Beim Laden der Datei füge ich eine autom. fortlaufende Numerierung am Zeilenanfang ein. Beim Speichern soll diese Numerierung aber nicht gespeichert werden. Kann man die Numerierung mit einer foreach-Schleife ersetzen ?
Ja, mit Hilfe von Regulären Ausdrücken und/oder der split-Funktion sollte das grundsätzlich kein Problem sein. Hilfe dazu findest du hier:
http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm
http://selfhtml.teamone.de/cgiperl/funktionen/zeichenketten.htm#split
Viele Grüße
Torsten
Hi Thorsten,
Wie bekommst du den Inhalt der (Text?)Datei in das Textfeld (meinst du eine textarea?).
#Text-Widget mit 2 Scrollbars (rechts)
my $frame2 = $haupt->Frame();
$frame2->Label(-text => "Textvorlage")->pack();
my $text = $frame2->Text(-wrap => 'none')
->pack(-padx => '10', -expand => 'yes', -fill => 'both');
.................
sub open {
open (FILE, "< $input") || die "Datei konnte nicht geöffnet werden!\n";
my $i = 0; #Fortlaufende Numerierung initialisieren
while (<FILE>) {
$i++;
$text->insert("end", "$i ".$_);
}
close(FILE);
}
Grußm Julia
hallo Julia,
Wie bekommst du den Inhalt der (Text?)Datei in das Textfeld (meinst du eine textarea?).
#Text-Widget mit 2 Scrollbars (rechts)
Oh. Das hättest du gleich sagen können, daß du PERL/Tk nimmst.
sub open {
open (FILE, "< $input") || die "Datei konnte nicht geöffnet werden!\n";
my $i = 0; #Fortlaufende Numerierung initialisieren
Das würde ich anders machen, zum Beispiel:
@ZEILEN = <FILE>;
close(FILE);
Danach hast du deine Input-Daten im Array @ZEILEN stehen und kannst die einzelnen Zeilen weiterbearbeiten, ungefähr nach diesem Schema:
foreach my $zeile (@ZEILEN) {
if ($zeile ...beginnt mit einer Ziffer oder Zahl...) {
$zeile =~ s/[0-9]//g;
print $zeile;
}
}
Den Regulären Ausdruck mußt du natürlich so gestalten, wie du ihn brauchst.
Grüße aus Berlin
Christoph S.
Hi Julia,
[...]
Ähm, ich muss gestehen, dass ich das von dir verwendete Modul nicht kenne. Welches ist es denn? Bietet das entsprechende Objekt auch eine Methode, den Text wieder auszulesen?
Ansonsten schau mal - soweit noch nicht geschehen - unter http://search.cpan.org nach, ob du zu dem Modul eine Dokumentation findest (ich gehe jetzt einfach davon aus, dass es ein CPAN-Modul ist, kann mich aber auch irren).
Viele Grüße
Torsten
hallo Torsten,
Ähm, ich muss gestehen, dass ich das von dir verwendete Modul nicht kenne.
Das ist PERL/Tk - dazu gibts auch hier im Archiv allerhand.
Ansonsten schau mal - soweit noch nicht geschehen - unter http://search.cpan.org nach, ob du zu dem Modul eine Dokumentation findest
Die gibt es, und ziemlich umfangreich. Fürs erste reicht aber auch perldoc Tk. Gut zum Nachlesen ist http://aspn.activestate.com/ASPN/docs/ActivePerl/site/lib/Tk.html
(ich gehe jetzt einfach davon aus, dass es ein CPAN-Modul ist, kann mich aber auch irren).
Du irrst nicht.
Grüße aus Berlin
Christoph S.
Hi Christoph,
Das ist PERL/Tk - dazu gibts auch hier im Archiv allerhand.
Danke, hatte es bereits in deinem ersten Posting zu diesem Thread gelesen ;)
Hm, da muss ich dann passen, mit dem Modul habe ich keinerlei Erfahrungen und weiß eigentlich auch nicht so recht, ob und warum ich mir diesen Wust an Informationen in dem von dir genannten Link zu Gemüte führen sollte.
Viele Grüße
Torsten
hallo Torsten,
weiß eigentlich auch nicht so recht, ob und warum ich mir diesen Wust an Informationen in dem von dir genannten Link zu Gemüte führen sollte.
Das Tk-Modul lernst du nicht mal fix an einem Tag, dazu ist es zu umfangreich und zu komplex. Das Faszinierende daran ist, daß sich sehr schöne GUI's erzeugen lassen. Der größte Nachteil besteht darin, daß diese graphischen Teile nicht über HTTP transportierbar sind. Du kannst also nicht eine komplexe graphische Ausgabe vom Server an den Browser eines users senden bzw. bist auf erhebliche Verrenkungen angewiesen (hab ich vor wenigen Tagen mal mit Philipp Hasenfratz diskutiert, müßte sich im Archiv finden lassen).
PERL/Tk übernimmt fast alles aus der Scriptsprache TCL/Tk, siehe http://dev.scriptics.com. Und wenn du mal Langeweile und ein bißchen viel Zeit hast, kann ich dir die Beschäftigung damit durchaus empfehlen.
Grüße aus Berlin
Christoph S.
Hi nochmal ;)
Das Tk-Modul lernst du nicht mal fix an einem Tag, dazu ist es zu umfangreich und zu komplex.
Das dachte ich mir ;)
[...] siehe http://dev.scriptics.com. Und wenn du mal Langeweile und ein bißchen viel Zeit hast, kann ich dir die Beschäftigung damit durchaus empfehlen.
Oh je, ich habe nur noch 2,5 Monate bis zum D-Day und bin zudem noch nicht mal "vom Fach". Aber danke für die Links und Infos.
Viele Grüße
Torsten
hi,
ouh, net machen: eigene Sub mit Namen einer internen funktion!
=> sub xopen{}
Rolf
sub open {
open (FILE, "< $input") || die "Datei konnte nicht geöffnet werden!\n";my $i = 0; #Fortlaufende Numerierung initialisieren
while (<FILE>) {
$i++;
$text->insert("end", "$i ".$_);
}
close(FILE);
}
hallo Torsten,
Beim Laden der Datei füge ich eine autom. fortlaufende Numerierung am Zeilenanfang ein. Beim Speichern soll diese Numerierung aber nicht gespeichert werden. Kann man die Numerierung mit einer foreach-Schleife ersetzen ?
Ja, mit Hilfe von Regulären Ausdrücken und/oder der split-Funktion sollte das grundsätzlich kein Problem sein.
split allein reicht nicht aus, damit wird nichts gelöscht. Aber mit einem Regulären Ausdruck sollte es möglich sein.
Hilfe dazu findest du hier:
http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm
Etwas präziser vielleicht: http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#zeichen
Grüße aus Berlin
Christoph S.