Thread OOP Parameterübergabe direkt oder indirekt ?
(21 answers)
Opened by der_thomas at 2014-04-26 00:16 Quote Stimmt, im Falle fehlender Leserechte gehts tatsächlich dahin, Danke für den Hinweis. Die Lösung mit 'die' habe ich aber auch wieder aufgegeben, das funktioniert nur vernünftig wenn man im Hintergrund immer eine Konsole offen hat, ansonsten kommt es wohl zu einem Programmabbruch ohne Rückmeldung. Daher wird nun, wie von Rosti vorgeschlagen, dieser Teil an das Frontend verlagert...naja nicht ganz - die Prüfung erfolgt im Konstruktor, aber wie es dann weitergeht ist Sache des Frontends - indem einfach der für 'die' bestimmte Fehlertext per Return zurückgegeben, was ich so umgesetzt habe: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 # Frontend ... my $genre_objekt = Trk_dict->new('genre_dict7'); if ($genre_objekt =~ /Dateilesefehler.*/){say "$genre_objekt";exit} ... # Klasse ... open( my $FH, '<:unix:encoding(UTF-8)', $file) or return "Dateilesefehler: '$file' konnte von Trk_dict nicht geöffnet werden\nGrund: $!\n"; ... Soweit der Stand von gerade eben, wo ich dachte ich wäre fertig und müßt das Ganze nur noch ausgiebig testen ... aber nun lese ich da was neues und verlockendes: Quote Mmh, das wäre verlockend, sieht fast ein wenig transparenter und später besser nachvollziehbarer aus als meine Version (Weniger was das Klassenmodul sondern mehr was das Mainscript betrifft): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 sub new { my ($classname, $file) = @_; open( my $FH, '<:unix:encoding(UTF-8)', $file) or return "Dateilesefehler: '$file' konnte von Trk_dict nicht geöffnet werden\nGrund: $!\n"; chomp(my @inhalt = <$FH>); close $FH; # Prüfen ob Dateiinhalt Hash tauglich ist if (($#inhalt+1) % 2 and $inhalt[$#inhalt] eq "\n"){pop @inhalt} if (($#inhalt+1) % 2){return "Dateiinhalt inkonsistent\n"} push @inhalt, "_file", $file; # wird benötigt zum automatischen Speichern my %dict = @inhalt; my $self = \%dict; bless($self, $classname); } Code (perl): (dl
)
1 2 3 4 5 6 7 8 .... # Main ... my $genre_objekt = Trk_dict->new('genre_dict'); if ($genre_objekt =~ /Dateilesefehler.*/){say $genre_objekt;exit} if ($genre_objekt =~ /Dateiinhalt.*/){say $genre_objekt;exit} .... Muss mich morgen mal mit eval beschäftigen... thomas |