Schrift
[thread]5979[/thread]

array manipulation



<< >> 4 Einträge, 1 Seite
hudo
 2003-12-19 18:16
#76670 #76670
User since
2003-11-20
72 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe aus einer Datei in die Listbox $liste_auswahldatei eingelesen:

1 beliebig Alpha beliebig beliebig
2 beliebig Bavaria-Camp beliebig beliebig
3 beliebig Arca beliebig beliebig
4 Alkoven Bavaria-Camp beliebig beliebig
5 beliebig Autoroller beliebig beliebig

Danach werden ein oder mehrere Zeilen der Listbox markiert; die markierten Einträge sollen in der Datei
geloescht werden.
Die laufenden Nummern sollen jedoch entsprechend korrigiert werden:

#####################################
Beispiel: markierte Einträge
2 beliebig Bavaria-Camp beliebig beliebig
3 beliebig Arca beliebig beliebig

Aussehen der Datei nach Lösch-Vorgang:
1 beliebig Alpha beliebig beliebig
2 Alkoven Bavaria-Camp beliebig beliebig
3 beliebig Autoroller beliebig beliebig
####################################################

Anbei noch ein Auszug aus meinem Code, in @array_file werden die übriggebliebenen Zeilen gesammelt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@zuloeschen = $liste_auswahldatei->curselection;	###Indizes der $liste_auswahldatei markierten Einträge

#$liste_auswahldatei->delete(0, "end");
if ( -s $file ) {
open(FILE,"<$file") || die $!;

while ( my $line = <FILE>) {
chomp $line;
@zeile = split ( /\t/, $line); ### einzelne Elemente durch tab getrennt
if ( ($#zuloeschen >= 0 ) && ( $zeile[0] == $zuloeschen[0]+1 ) ) {
shift @zuloeschen;
} else {
push(@array_file, $line); ### hier werden die nicht geloeschten Zeilen gesammelt
}
}## while
close(FILE);
} else {
$fehler->delete("1.0","end");
$fehler->insert("1.0","\n\nFehler !!!\n Die Masken-Datei\nfehlt\n\n");
} ## else

Sitz grad aufm Schlauch ....
Strat
 2003-12-19 18:58
#76671 #76671
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
1. bitte in Zukunft dazuschreiben, dass es um Perl/Tk geht, weil sonst jeder zunaechst mal annimmt, dass du von CGI sprichst, und die Leute, die sich mit Tk gut auskennen aber nicht mit CGI, diesen Thread gar nicht lesen und du dann eventuell keine Antwort bekommst.
2. schau dir mal das Modul CPAN:Tie::File; das bindet eine Datei an eine Liste. Dann brauchst du nur die Elemente der Liste loeschen, und in der Datei passiert das dann automatisch.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
ptk
 2003-12-19 19:08
#76672 #76672
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ungetesteter Loesungsansatz:
Code: (dl )
1
2
3
@list = map { s/^\d+//; $_ } @list; # alle fuehrenden Ziffern loeschen
$i = 1;
@list = map { $i++ . $_ } @list; # Nummerierung neu generieren
hudo
 2003-12-19 21:36
#76673 #76673
User since
2003-11-20
72 Artikel
BenutzerIn
[default_avatar]
@strat:
Ich meine, dass das oben aufgefuehrte Problem ein "reines" Perl-Problem (Habs vielleicht nicht deutlich genug herausgehoben ) ist und (eigentlich) nichts Tk-spezifisches hat.
Deswegen hab ich perl/tk auch nicht extra erwähnt.



@ptk:

danke, code ist jetzt getestet und funktioniert... :)
<< >> 4 Einträge, 1 Seite



View all threads created 2003-12-19 18:16.