Font
[thread]12083[/thread]

Formatierte Ausgabe / Platzhalter ... aber wie ?

Readers: 19


<< |< 1 2 3 >| >> 24 entries, 3 pages
cherished
 2008-06-26 11:29
#111530 #111530
User since
2008-06-18
31 articles
BenutzerIn
[default_avatar]
Also, ich hab mein Programm fertig und noch ein Problem und zwar das meine Ausgabe in der Form wie ich es möchte nicht funktioniert. Die Abstände sind nicht immer gleich.

So ist es zur Zeit. Natürlich absolut nicht gut.
Es soll so sein, dass die ausgabe in der .txt DAtei auch so erscheinen soll.
Aber wie? Sobald bei stat[x] 8 Zeiche nlange zahlen sind verschiebt sich alles.
Kann man das verhindern ?


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
sub ausgabe()
{
              print $ausgabedatei "ID:                  @stat[0]\n";
              print $ausgabedatei "Vorgangsart:         @stat[1]                @ausgabe[0]\n";
              print $ausgabedatei "Landesdirekt:                @stat[2]                @ausgabe[1]\n";
              print $ausgabedatei "VNR:                 @stat[3]                @ausgabe[2]\n";
              print $ausgabedatei "Schadensjahr:                @stat[4]                @ausgabe[3]\n";
              print $ausgabedatei "SNR:                 @stat[5]                @ausgabe[4]\n";
              print $ausgabedatei "__________________________________________________________________\n\n";
}
Linuxer
 2008-06-26 11:31
#111531 #111531
User since
2006-01-27
3745 articles
HausmeisterIn

user image
Schau Dir mal printf() an.

perldoc -f printf
perldoc -f sprintf

Oder

perldoc perlform
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
cherished
 2008-06-26 11:32
#111532 #111532
User since
2008-06-18
31 articles
BenutzerIn
[default_avatar]
Linuxer+2008-06-26 09:31:55--
Schau Dir mal printf() an.

perldoc -f printf
perldoc -f sprintf


mach ich
cherished
 2008-06-26 12:07
#111533 #111533
User since
2008-06-18
31 articles
BenutzerIn
[default_avatar]
also iwie will der mich ärgern ...
welche Variante kann ich denn am besten nehmen, damit das ordentlich formatiert ist?
ich hab das jetzt so ist aber nur kuddel muddel.

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
sub ausgabe()
{
              printf $ausgabedatei "ID:";
               printf $ausgabedatei '%30s',"@stat[0]\n";

              printf $ausgabedatei "Vorgangsart:";
               printf $ausgabedatei '%30s',"@stat[1]";
               printf $ausgabedatei '%25s',"@ausgabe[0]\n";

               printf $ausgabedatei "Landesdirekt:";
               printf $ausgabedatei '%25s',"@stat[2]";
               printf $ausgabedatei '%25s',"@ausgabe[1]\n";

               printf $ausgabedatei "VNR:";
               printf $ausgabedatei '%25s',"@stat[3]";
               printf $ausgabedatei '%25s',"@ausgabe[2]\n";

               printf $ausgabedatei "Schadensjahr:";
               printf $ausgabedatei '%25s',"@stat[4]";
               printf $ausgabedatei '%25s',"@ausgabe[3]\n";

               printf $ausgabedatei "SNR:";
               printf $ausgabedatei '%25s',"@stat[5]";
               printf $ausgabedatei '%25s',"@ausgabe[4]\n\n";   c

              print $ausgabedatei "__________________________________________________________________\n\n";
}
cherished
 2008-06-26 12:27
#111535 #111535
User since
2008-06-18
31 articles
BenutzerIn
[default_avatar]
ich muss haltiwie nen aufhängepunkt setzten das kreig ich nicht hin iwie.
Linuxer
 2008-06-26 12:33
#111536 #111536
User since
2006-01-27
3745 articles
HausmeisterIn

user image
Was auch immer "kuddel muddel" für Dich bedeutet.

Die nötige Doku habe ich Dir genannt [ (s)printf bzw. perlform ].

Was Du allerdings draus machst, versteh ich nicht.

Warum brauchst Du 3 printf() um eine Zeile auszugeben?
Warum greifst Du auf einen Array-Slice zu, wenn Du nur einen einzelnen Skalar haben willst?

Code (perl): (dl )
printf $ausgabedatei "SNR: %25s %25s\n", $stat[$index], $ausgabe[$index];


PS: Und ohne ein greifbares Datenbeispiel kann man Dein Problem nicht nachvollziehen...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Xeno
 2008-06-26 12:33
#111537 #111537
User since
2008-06-25
4 articles
BenutzerIn
[default_avatar]
Hi,

man könnte auch sowas machen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/local/bin/perl -w

my $a = "Hugo";
my $a1 = "Hugo bla";
my $b = "Hugo Ernst";
my $b1 = "Hugo";

print _stringFormat($a, 30, " ");
print _stringFormat($a1, 30, " "), "\n";
print _stringFormat($b, 30, " ");
print _stringFormat($b1, 30, " "), "\n";
print "fertig :-)";

sub _stringFormat { # variable, länge, zeichen
        return $_[0] . $_[2] x ($_[1] - length($_[0]));
}


Mega
cherished
 2008-06-26 12:34
#111538 #111538
User since
2008-06-18
31 articles
BenutzerIn
[default_avatar]
Linuxer+2008-06-26 10:33:00--
Was auch immer "kuddel muddel" für Dich bedeutet.

Die nötige Doku habe ich Dir genannt [ (s)printf bzw. perlform ].

Was Du allerdings draus machst, versteh ich nicht.

Warum brauchst Du 3 printf() um eine Zeile auszugeben?
Warum greifst Du auf einen Array-Slice zu, wenn Du nur einen einzelnen Skalar haben willst?

Code (perl): (dl )
printf $ausgabedatei "SNR: %25s %25s\n", $stat[$index], $ausgabe[$index];


wow... gute frage ... jetzt muss ich erst alles mal checke nwas du meinst :p aber thx
Linuxer
 2008-06-26 12:41
#111539 #111539
User since
2006-01-27
3745 articles
HausmeisterIn

user image
Linuxer+2008-06-26 10:33:00--
Code (perl): (dl )
printf $ausgabedatei "SNR: %25s %25s\n", $stat[$index], $ausgabe[$index];



Du kannst auch noch Deine festen Strings wie "SNR" entsprechend einsetzen, damit er linksbündig mit einer festen Breite eingebaut wird:

Code (perl): (dl )
1
2
# erster String linksbündig
printf $ausgabedatei "%-20s %25s %25s\n", 'SNR:', $stat[$index1], $ausgabe[$index2];

Damit sollte es möglich sein, die entsprechenden Spalten übereinander darzustellen...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
cherished
 2008-06-26 12:50
#111540 #111540
User since
2008-06-18
31 articles
BenutzerIn
[default_avatar]
Linuxer+2008-06-26 10:41:44--
Linuxer+2008-06-26 10:33:00--
Code (perl): (dl )
printf $ausgabedatei "SNR: %25s %25s\n", $stat[$index], $ausgabe[$index];



Du kannst auch noch Deine festen Strings wie "SNR" entsprechend einsetzen, damit er linksbündig mit einer festen Breite eingebaut wird:

Code (perl): (dl )
1
2
# erster String linksbündig
printf $ausgabedatei "%-20s %25s %25s\n", 'SNR:', $stat[$index1], $ausgabe[$index2];

Damit sollte es möglich sein, die entsprechenden Spalten übereinander darzustellen...


danke sehr. echt super =) werde das mal testen bis jetzt klappt der mist immer noch nicht :/

Im moment siehts so aus ...
Code: (dl )
1
2
3
4
5
6
ID:                     10_04
Vorgangsart: 27 Korrekt
Landesdirekt: 22367 Korrekt
VNR: 29868 Korrekt
Schadensjahr: 123 Korrekt
__________________________________________________________________
<< |< 1 2 3 >| >> 24 entries, 3 pages



View all threads created 2008-06-26 11:29.