Schrift
[thread]8282[/thread]

Win32::OLE auf dem pc gesucht: kann zwar modul finden gibt aber mehrere (Seite 5)



<< |< 1 2 3 4 5 6 7 8 ... 10 >| >> 93 Einträge, 10 Seiten
sabrina
 2006-09-11 14:34
#69380 #69380
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
noch ne frage:
ich moechte an den schluss jeder zeile eine spalte anfuegen immer der gleiche satz kannst du mir nur sagen wo ich das einfuegen muss ungefaehr dann versuche ich es selbst mal?
wuerde es gehen also nur ungefaehrer ort so in der while schleife, nach der while schleife oder im open der neuen datei??
waere nett und wuerde auch schon sehr helfen mich besser zurecht zu finden
danke lg sabrina
renee
 2006-09-11 14:47
#69381 #69381
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Überleg' mal logisch und beantowrte die folgenden Fragen für Dich selbst:

*) Was macht das open? Kann man da etwas angeben, was in die Datei geschrieben werden soll?

*) Was wird _in_ der while-Schleife gemacht? Kann ich da etwas angeben, was in jeder Zeile stehen soll?

*) Was wird _nach_ der while-Schleife gemacht? Kann ich da etwas angeben, was in jeder Zeile stehen soll?
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/
renee
 2006-09-11 14:58
#69382 #69382
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=sabrina,11.09.2006, 12:23]danke ja genau so,
woher weiss man wo man das aendern muss?
[...][/quote]
Du musst Dir immer überlegen, was welcher Teil vom Programm macht. Beispiel:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
 1  #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 my @array = qw(71 72 73 74 75);
7
8 for my $elem(@array){
9 $elem = chr($elem);
10 }
11
12 print $_,"\n" for(@array);


Wenn ich aus den Zahlen nicht die Buchstaben machen möchte, sondern immer mal 2 nehmen will. Wo sollte ich das wohl ändern? Überleg' mal, wo etwas an den Elementen des Arrays etwas geändert wird? Bis Zeile 6 gibt es das Array ja noch nicht einmal. Und Zeile 12 verändert nichts. Also bleibt ja nur die for-Schleife. und im Schleifenkopf passiert so etwas nicht. Also bleibt nur Zeile 9.

Wenn ich jetzt die Buchstaben nicht untereinander stehen haben will, sondern nebeneinandern. Wo muss ich das machen? Also die for-Schleife hat in diesem Beispiel mit der Ausgabe nichts zu tun. Da werden nur die Arrayelemente verändert. Das einzige was mit der Ausgabe zu tun hat, steht in Zeile 12. Also muss ich da was ändern.

Deswegen ist es sehr wichtig, dass Du verstehst was in Deinem Programm vor sich geht.

Um das so etwas besser zu verstehen, kannst Du Dir auch mal Testausgaben einbauen. Also immer wieder mal ein print, mit dem Du Dir Inhalte von Variablen ausgeben lässt.
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/
sabrina
 2006-09-11 15:23
#69383 #69383
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
wow, danke fuer die gute erklaerung!!

spontan wuerde ich behaupten ich kann es nur im foreach Teil (weil foreach line)einbauen oder aufjedenfall in der while schleife und zwar mit push.
stimmt das?
lg sabrina\n\n

<!--EDIT|sabrina|1157974162-->
renee
 2006-09-11 15:39
#69384 #69384
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du hast die beiden möglichen Stellen erkannt. Gut!

Nur was Du machen würdest ist nur zum Teil richtig:
Im foreach-Teil kannst Du es beim Push mit hinzufügen oder Du gibst es beim print einfach mit aus.

foreach:
Code: (dl )
1
2
# ersetzt das bisherige push
push(@data,[@array,'NeueSpalte']);


print:
Code: (dl )
1
2
# ersetzt den bisherigen print-Befehl:
print OUTDATEN join(';',@$entry),'NeueSpalte',"\n"; #ausgabe in datei
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/
sabrina
 2006-09-11 15:55
#69385 #69385
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
cool, cool ich glaub es wird schon bissel besser oder? :D
also hab die foreach schleife geandert und es funktioniert einwandfrei du bist echt ein toller lehrer!
ist es grundsaetzlich egal welche der beiden codestuecke ich nehme?
lg sabrina
renee
 2006-09-11 16:07
#69386 #69386
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Jein. Von der Funktionalität her ist es völlig egal. Wenn Du es erst im Array speicherst, verbrauchst Du natürlich mehr Speicher. Aber das ist egal, solange Du nicht hunderttausende von Zeilen hast, denen Du die Spalte anhängst.
Wenn Du die Spalte irgendwann später im Programm noch mal "anfassen" musst (verändern oder ein zweites Mal ausgeben), dann kann es sich schon wieder lohnen, diese Spalte mit dem push in der foreach-Schleife anzufügen.

So pauschal kann man es also nicht sagen. Bei Deinem Code bleibt es sich gleich.


Ich persönlich tendiere dahin, solche Sachen immer so spät wie möglich zu machen. Hier würde ich es beim print machen, zum einen wegen dem Speicher und zum anderen brauchst Du die Spalte ja später nicht nocheinmal.
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/
sabrina
 2006-09-11 16:50
#69387 #69387
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
dann ist aber zwischen dem letzen spalte und der angefuegten kein ;
dann habe ich einfach geschrieben
Code: (dl )
  print OUTDATEN join(';',@$entry),";","50 MB","\n";
geht das auch?also die ausgabe waere richtig!

noch ne kurze frage wie schreibe ich ein open das mehrere dateien oeffnen soll?
Code: (dl )
open(FH,"<ZIEL1.txt,ZIEL2.txt,ZIEL3.txt,ZIEL4.txt") or die $!;  

eigendlich muss ich die doch nur oeffnen dann mit chomp kurz drueber und dann datei zum schreiben oeffnen print und close beide oder?
oder lieber mit "."anneinander haengenalso so sieht mein code bis jetzt aus ohne die . (steht ja fuer anhaengen?)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use warnings;
use strict;
open(FH,"<"ZIEL1.txt"."ZIEL2.txt"."ZIEL3.txt"."ZIEL4.txt") or die $!;           #oeffnen der datei
chomp my $line;
open(OUTDATEN, ">ZIELgesamt.txt") or die "Fehler beim oeffnen/anlegen: $!";
for my $FH(@data)
{
  print FH
}
close (OUTDATEN)or die $!;

 close (FH) or die $!;
renee
 2006-09-11 17:06
#69388 #69388
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=sabrina,11.09.2006, 14:50]dann ist aber zwischen dem letzen spalte und der angefuegten kein ;
dann habe ich einfach geschrieben
Code: (dl )
  print OUTDATEN join(';',@$entry),";","50 MB","\n";
geht das auch?also die ausgabe waere richtig!

[/quote]
Ja, das geht, aber besser und schoener ist es so:
Code: (dl )
print OUTDATEN join(';',@$entry),";50 MB","\n";


Quote
noch ne kurze frage wie schreibe ich ein open das mehrere dateien oeffnen soll?
Code: (dl )
open(FH,"<ZIEL1.txt,ZIEL2.txt,ZIEL3.txt,ZIEL4.txt") or die $!;  

eigendlich muss ich die doch nur oeffnen dann mit chomp kurz drueber und dann datei zum schreiben oeffnen print und close beide oder?
oder lieber mit "."anneinander haengenalso so sieht mein code bis jetzt aus ohne die . (steht ja fuer anhaengen?)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use warnings;
use strict;
open(FH,"<"ZIEL1.txt"."ZIEL2.txt"."ZIEL3.txt"."ZIEL4.txt") or die $!; #oeffnen der datei
chomp my $line;
open(OUTDATEN, ">ZIELgesamt.txt") or die "Fehler beim oeffnen/anlegen: $!";
for my $FH(@data)
{
print FH
}
close (OUTDATEN)or die $!;

close (FH) or die $!;

Wenn Du die mit . aneinanderhängst, werden die Strings zu einem großen String zusammengehängt. Das klappt nicht.

Du wirst nicht darum kommen, eine Schleife um alles zumachen und bei jedem Schleifendurchlauf eine Datei öffnest. Dann solltest Du aber bei jedem öffnen einer Datei zum Schreiben aus dem > ein >> machen, sonst überschreibst Du die Datei immer wieder (siehe auch perldoc -f open)\n\n

<!--EDIT|renee|1157980154-->
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/
sabrina
 2006-09-11 17:16
#69389 #69389
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
danke habe deinen print vorschlag sofort verbessert!
lies jetzt mal den perldoc und schaumal was man darau schlaues machen kann danke aufjedenfall
bis bald
lg sabrina
<< |< 1 2 3 4 5 6 7 8 ... 10 >| >> 93 Einträge, 10 Seiten



View all threads created 2006-08-30 11:40.