Sinnloser Freeze in TcLTK bitte dringend um hilfe?

... komplette Frage anzeigen

2 Antworten

das war nicht einfach, benutzt doch jeder seine eigene Form der Notation

1. würde ich in eine glob-Anweisungen immer die Option -nocomplain
aufnehmen, um einen Fehler-Abbruch zu vermeiden

z.B.

set modsActive [glob -nocomplain -directory $modsPath/ *.jar]

Der eigentliche Fehler liegt aber bei der Vergabe des Namens info für eine
eigene Prozedur

proc info { topic } {
global versionNr mcPath mcVersion forgeVersion modsActive ..
.....
}

info ist bereits eine in Tcl eingebaute Funktion, so dass es hier Konflikte
gibt.

Normalerweise wird eine interne Prozedur durch eine Eigene überschrieben,
warum das hier nicht klappt? Keine Ahnung.

So ein ähnliche Probleme hatte ich mal mit Tcl für Windows. Dort hatte ich
(auch noch meine ersten Versuche mit Windows) die Script-Datei button.tcl
genannt. Da lief nichts.

In deiner Script-datei habe ich proc info durch proc info_local und
natürlich deren Aufruf -command ...

verändert und konnte auch die Button benutzen.

Weiterhin viel Erfolg.

leider kann ich die Code-Teile nicht als solche darstellen, sobald ich eine Zeile als "Code" markiere, wird der gesamte Text zum Code. Sicher auch ein versteckter Fehler.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von guenterhalt
12.02.2016, 15:24

Normalerweise wird eine interne Prozedur durch eine Eigene überschrieben,
warum das hier nicht klappt? Keine Ahnung.

Nachdenken hilft doch.

Die interne Funktion "info" wird doch durch die eigene Procedur ersetzt. Die hat natürlich eine ganz andere Aufgabe als die Eingebaute und wird jetzt (leider für den Anwender unsichtbar) an vielen anderen Stellen benutzt. So muss es schief gehen.

Das hat auch die Fehlermeldung beim Betätigen eines Button gezeigt.

wrong # args: should be "info topic"

Mit anderen Worten: info wurde (intern) ohne Übergabe-Wert aufgerufen.

0

beim ersten Ansehen habe ich auch keinen Fehler gesehen.
Problematisch ist, dass der Code erst einmal für Unix/Linux aufbereitet werden muss ( 0D 0A ) muss in 0A umgewandelt werden.

Die zu öffnende Datei ../lang/ger.lang steht mir nicht zur Verfügung und irgendein Text führt zum Abbruch des Programms.

Stelle diese Datei zur Verfügung oder gibt Hinweise, wie die aussehen muss.

Leider war ich 2 Monate nicht im Lande, so dass ich diese Frage erst heute sehen konnte. Zu spät?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DerTobi01
12.02.2016, 12:35

Nein, noch keine Lösung.
Die ger.lang enthält einfach Zeile für Zeile einzelnen Text für die Labels und Buttons, die werden in bestimmter Reihenfolge eingelesen und dann als Variable gespeichert
Sieht ca so aus
Deutsch
Beenden
Speichern_unter
Version_Bestätigen

Und so weiter (ist hier nur bsp)

0

Was möchtest Du wissen?