Christoph Schnauß: Tcl/Tk: dateentry will nicht...

Beitrag lesen

hi tOM,

Das lustige ist ja: Bei mir auch.

ups, versteh ich jetzt nicht ... da hättest du den Teil meines Postings, auf den du dich beziehst, vielleicht zitieren sollen :-(

Aber wie gesagt ich bearbeite ein schon existierendes, größeres Programm.

Naja, sowas gibts es ja. Bloß sehe ich an deiner Fehlermeldung, daß bei dir (oder eben deinem Freund *g*) TCLPro 1.4 installiert ist, und das ist bereits fast zwei Jahre alt und basiert auf TCL/Tk 8.3.2  -  aktuell ist aber TCL/Tk 8.4.1beta4. Da gibt es, da wir von einer Windows-Installation ausgehen, einige Veränderungen

Und da hab ich einfach den Code eingefügt und dann kommt der Fehler. Muss ich noch irgendwas beachten oder so??

"Irgendwas" mußt du mit SAicherheit noch beachten bzw. korrigieren. Ich sagte allerdings bereits, daß ich TCLPro nicht installiert habe. Die Version, die ich (unter WINDOWS) zur Zeit benutze, ist die jüngste beta, also TCL/Tk 8.4.0.1.beta4  -  übrigens hab ich die auch unter FreeBSD.

TCLPro ist nur dann interessant, wenn man seine TCL-Scripts in EXE-Dateien umwandeln möchte, was zuweilen selbst bei einfachsten Scripts zu monströsen Riesendateien führt. Ich würde von der Benutzung von TCLPro grundsätzlich abraten, wenn man mit TCL/Tk noch nicht sehr vertraut ist. Für eine Windows-Installation (egal, welche  -  bei mir läufts auch unter Win95) ist das von ActiveState bereitgestellte jeweils aktuelle Paket (ActiveTcl8.4.0.1b4-win32-ix86.exe) mehr als ausreichend. Aber ACHTUNG! Leider gibt es bei TCL/Tk keine uneingeschränkte "Abwärtskompatibilität", das heißt, wenn du Packages einbindest, muß zumindest die Versionsnummer im Script angepaßt werden, meistens auch noch etwas mehr.

Das Script, das du "abgetippt" hast, hat bei mir folgendes Aussehen:

----------------------------------------------------------------------

#  DEMO: dateentry in [incr Widgets]

----------------------------------------------------------------------

package require Iwidgets 4.0

proc returnCmd {} {
  puts [.de get]
}

iwidgets::dateentry .de -labeltext "Date:" -command returnCmd
pack .de -fill x -expand yes -padx 10 -pady 10

Wenn ich das unter dem Namen "dateentry.tcl" an beliebigem Ort auf meinem Rechner ablege, kann ich es problemlos aufrufen und erhalte keinerlei Fehlermeldungen. Der Pfad dazu sieht bei mir so aus:
D:\TCL\lib\iwidgets4.0.1\demos\dateentry
Dieser Pfad kann bei dir natürlich anders aussehen, weil du ein Verzeichnis C:\Programme benutzt (das ich absolut nicht haben will). Wenn ich aber die Datei "D:\TCL\lib\iwidgets4.0.1\scripts\dateentry.itk" aufrufe und mit wish84.exe zu öffnen versuche (Doppelklick), bekomme ich vergleichbare (in Details andere) Fehlermeldungen, wie du sie gepostet hattest.

Ich kann aber eine Datei "dateentry.tcl" aus jedem beliebigen anderen TCL-Script heraus aufrufen, wenn ich sie beispielsweise mit "require" eingebunden habe. Insofern kann ich dein Problem einfach nicht ganz richtig nachvollziehen, ich kann dir lediglich sagen, was auf meinem WinXP-Rechner passiert, wenn ich dieses TCL-Script ausführen lasse.

Vielleicht würde es dir vorerst tatsächlich weiterhelfen, wenn du auf TCLPro verzicht4en und stattdessen die jüngste bei ActiveState angebotene EXE installieren würdest.

Grüße aus Berlin

Christoph S.

thx tOM