Airwolf89: TCL: unterschiedlich lange Inhalte tabellarisch anordnen

Beitrag lesen

Hallo,

link würde ich dir gerne geben, aber anscheindend wurde das Teil gelöscht, vllt. wegen meines Doppelposts gestern. Hat aber erstens nix mit dieser konkreten Aufgabenstellung zu tun und zweitens hat auch keiner geantwortet. In dem Post habe ich auch ne ganz andere Frage gestellt wie ich an eine Aufgabe herangehen kann.

So, also die Ausgabe soll auf der Konsole erfolgen.

Ich habe das jetzt so versucht dass ich den Kopf der Tabelle in seine Einzelnen Bestandteile zerlöegt habe, also die einzelnen Überschriften und dann die Differenz zwischen der Länge dieser Überschriften und der Länge der Tabelleneinträge gebildet. Entsprechend der Differenz habe ich dann jeweils eine For-Schleife laufen lassen um an die Daten Leerzeichen zu hängen um somit alle daten dann entsprechend den Überschriften auszurichten. Meiner Ansicht nach müsste das auch so funktionieren, auch der Code (siehe unten, ist allerdings auskommentiert) müsste so passen, aber der hängt mir wie wild da Leerzeichen an, entweder mal zu wenig oder mal zu viel, ich kanns einfach nicht nachvollziehen.

Wäre schön wenn ihr mal drüberguckt und mir vllt. sagen könntet was ich falsch gemacht hab oder ihr mir ne andere Lösung anbieten könntet.

Code:

set check "0"

#set head(peer) "peer              " #set head(local) "|from                                     " #set head(remote) "|to                                         " #set head(error) "|errors" #set head(encaps) "encaps            " #set head(decaps) "|decaps                                   " #set head(encrypt) "|encrypt                                    " #set head(decrypt) "|decrypt" #set head(line) "--------------------------------------------------------------------------------------------------------------"

#puts "$head(peer)$head(local)$head(remote)$head(error)" #puts "$head(encaps)$head(decaps)$head(encrypt)$head(decrypt)" #puts "$head(line)"

#set l_h(peer) [string length $head(peer)] #set l_h(local) [string length $head(local)] #set l_h(remote) [string length $head(remote)] #set l_h(encaps) [string length $head(encaps)] #set l_h(decaps) [string length $head(decaps)] #set l_h(encrypt) [string length $head(encrypt)]

while {$check == 0} {

set first [string first vrf $output]   set last [string first path $output]

set last [expr $last + 20]

if {$first > 0 } {     set part [string range $output $first $last]     set output [string range $output $last end]

set peera [string first peer $part]     set peerb [string first { port 500} $part]     set peer [string range $part [expr $peera + 5] [ expr $peerb - 1]]

set locala [string first {local  ident (addr/mask/prot/port): } $part]     set localb [string first {   remote} $part]     set local [string range $part [expr $locala+36] [expr $localb-2]]     set remotea [string first {   remote ident (addr/mask/prot/port):} $part]     set remoteb [string first {   current} $part]     set remote [string range $part [expr $remotea+39] [expr $remoteb-2]]

set encapsa [string first {encaps} $part]     set encapsb [string first {, #pkts encrypt} $part]     set encaps [string range $part [expr $encapsa + 8] [expr $encapsb-1]]

set decapsa [string first {decaps}  $part]     set decapsb [string first {, #pkts decrypt} $part]     set decaps [string range $part [expr $decapsa + 7] [expr $decapsb-1]]

set encrypta [string first {encrypt} $part]     set encryptb [string first {, #pkts digest} $part]     set encrypt [string range $part [expr $encrypta + 8] [expr $encryptb-1]]

set decrypta [string first {decrypt} $part]     set decryptb [string first {, #pkts verify} $part]     set decrypt [string range $part [expr $decrypta + 8] [expr $decryptb-1]]

set errora [string first {errors} $part]     set errorb [string first {#recv} $part]     set error [string range $part $errora [expr $errorb-3]]

#set l_peer [string length $peer]     #set l_local [string length $local]     #set l_remote [string length $remote]     #set l_enc [string length $encaps]     #set l_dec [string length $decaps]     #set l_cry [string length $encrypt]

#set diff(peer) [expr $l_h(peer)- $l_peer]     #set diff(local) [expr $l_h(local)-$l_local]     #set diff(remote) [expr $l_h(remote)-$l_remote]     #set diff(enc) [expr $l_h(encaps)-$l_enc]     #set diff(dec) [expr $l_h(decaps)-$l_dec]     #set diff(cry) [expr $l_h(encrypt)-$l_cry]     #set space_peer ""     #set space_local ""     #set space_remote ""     #set space_enc ""     #set space_dec ""     #set space_cry ""

#set dur(a) 0     #set dur(b) 0     #set dur(c) 0     #set dur(d) 0     #set dur(e) 0     #set dur(f) 0

#for {set i 0} {$i < $diff(peer)} {incr i} {     #  set space_peer [append $space_peer "|"]     #  incr dur(a)     #}

#for {set i 0} {$i < $diff(local)} {incr i} {     #  set space_local [append $space_local "|"]     #  incr dur(b)     #}

#for {set i 0} {$i < $diff(remote)} {incr i} {     #  set space_remote [append $space_remote "|"]     #  incr dur(c)     #}

#for {set i 0} {$i < $diff(enc)} {incr i} {     #  set space_enc [append $space_enc "|"]     #  incr dur(d)     #}

#for {set i 0} {$i < $diff(dec)} {incr i} {     #  set space_dec [append $space_dec "|"]     #  incr dur(e)     #}

#for {set i 0} {$i < $diff(cry)} {incr i} {     #  set space_cry [append $space_cry "|"]     #  incr dur(f)     #}

#puts "$peer$space_peer$local$space_local$remote$space_remote$error"     #puts "$encaps$space_enc$decaps$space_dec$encrypt$space_cry$decrypt"

puts "$peer $local $remote $error"     puts "$encaps $decaps $encrypt $decrypt"     puts "======================================================================================================="

#===================== #Test #=====================

#puts "Laenge der Kopfdaten"   #puts "$l_h(peer)"   #puts "$l_h(local)"   #puts "$l_h(remote)"   #puts "$l_h(encaps)"   #puts "$l_h(decaps)"   #puts "$l_h(encrypt)"   #puts "$head(line)"   #puts "Laenge der Daten"   #puts "$l_peer"   #puts "$l_local"   #puts "$l_remote"   #puts "$l_enc"   #puts "$l_dec"   #puts "$l_cry"   #puts "Laenge der differenzen"   #puts "$diff(peer), $diff(local), $diff(remote), $diff(enc), $diff(dec), $diff(cry)"   #puts "$dur(a), $dur(b), $dur(c), $dur(d), $dur(e), $dur(f)"   #puts "abstaende"   #puts "$space_peer,bla"   #puts "$space_local,bla"   #puts "$space_remote,bla"   #puts "$space_enc,bla"   #puts "$space_dec,bla"   #puts "$space_cry,bla"

} else {     set check "1"   } }

Habe eigentlich so ziemlich alles überprüft was ich überprüfen konnte:

peer              |from                                     |to                                         |errors encaps            |decaps                                   |encrypt                                    |decrypt

Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 12 31 31 7 8 8 Laenge der differenzen 6, 11, 13, 11, 34, 36 Durchlaeufe in der For-Schliefe 6, 11, 13, 11, 34, 36 abstaende |,bla |||||,bla |||||||,bla ||||||||,bla |,bla ||||||||||||||||||,bla Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 15 38 38 1 2 2 Laenge der differenzen 3, 4, 6, 17, 40, 42 Durchlaeufe in der For-Schliefe 3, 4, 6, 17, 40, 42 abstaende |||||||,bla ||||,bla ||||||,bla |||||||||,bla ||||||||||,bla |||||,bla Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 13 38 36 1 2 2 Laenge der differenzen 5, 4, 8, 17, 40, 42 Durchlaeufe in der For-Schliefe 5, 4, 8, 17, 40, 42 abstaende |||||||||||||||,bla ||||||,bla |||||||||,bla ||||||||||||||||,bla |,bla ||,bla Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 14 38 37 1 2 2 Laenge der differenzen 4, 4, 7, 17, 40, 42 Durchlaeufe in der For-Schliefe 4, 4, 7, 17, 40, 42 abstaende |||||,bla |,bla |||||||||||||||||||,bla |||||||||||||||||||,bla |||||||||,bla |||||||||||||,bla Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 14 38 37 1 2 2 Laenge der differenzen 4, 4, 7, 17, 40, 42 Durchlaeufe in der For-Schliefe 4, 4, 7, 17, 40, 42 abstaende |||,bla ||||,bla |||||||||||||||||||||,bla |||||||||||||||||||,bla |||||||,bla ||||||||||||||,bla Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 13 38 36 1 2 2 Laenge der differenzen 5, 4, 8, 17, 40, 42 Durchlaeufe in der For-Schliefe 5, 4, 8, 17, 40, 42 abstaende ||||||||||||||||||||||||||||,bla ||,bla |||,bla |||||||||||||||||||||||||,bla ||||||||||||||||||||,bla ||||||||||||||||||||,bla Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 13 38 36 8 9 9 Laenge der differenzen 5, 4, 8, 10, 33, 35 Durchlaeufe in der For-Schliefe 5, 4, 8, 10, 33, 35 abstaende |||||||||||||||||||||||||||||||||,bla ||,bla ||||,bla ||||,bla |||||||||||||||||||||||||,bla ||||||||||||||||||||||||||,bla Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 12 31 31 4 5 5 Laenge der differenzen 6, 11, 13, 14, 37, 39 Durchlaeufe in der For-Schliefe 6, 11, 13, 14, 37, 39 abstaende |||,bla ||||||||||||||||||||||||||||||||||,bla ||||||||||||||||||||||||||||||,bla |||||||,bla |||||||||||||||||||||||||,bla |||||||||||||||||||||||||||||||,bla Laenge der Kopfdaten 18 42 44 18 42 44

Laenge der Daten 12 28 31 6 6 7 Laenge der differenzen 6, 14, 13, 12, 36, 37 Durchlaeufe in der For-Schliefe 6, 14, 13, 12, 36, 37 abstaende |||,bla |||||||,bla |||||||||||||||||||||||||||||||||||||,bla ||||||,bla |||||||||||||||||,bla ||||||||||||||||||||||||||||||||,bla

Da ist noch nichtmal nen System erkennbar warum das so sein könnte. Ich bin jetzt echt mit meinem Latein am Ende. Ich hoffe ihr wisst was da sein könnte.

Danke im voraus.