2016-04-21 5 views
0

Ich habe eine TCL UI mit ein paar Eingaben entwickelt, die vom Benutzer eingegeben werden müssen. Der erste Benutzer wird alle Dateien Pfad eingeben, aber dann wollte ich die benutzerdefinierten Einträge in einer Datei speichern und dann später laden. Speichern ist in Ordnung ... Ich denke, alle diese Variablen in einer Datei speichern, aber das Laden von einer Datei benötigt eine Zuordnung, wie es gemacht werden kann? Jedes Beispiel wird hilfreich sein enter image description hereSaveTCL Eingabe Eintrag in einer Datei und später laden

+0

Fügen Sie ein Beispiel des Codes hinzu, den Sie zum Speichern der Variablen verwenden. –

Antwort

0

Ich erreichte dies durch folgenden Code, obwohl nicht sehr optimiert. Zuerst speichere ich eine Eingabedatei mit Variablenwerten und lese sie dann in der gleichen Reihenfolge.

proc save_input_entries {} { 
    global ENTRYfilename ENTRYfilename2 ENTRYfilename3 ENTRYfilename4 ENTRYfilename5 ENTRYfilename6 ENTRYfilename7 ENTRYfilename8 ENTRYfilename9 ENTRYfilename10 ENTRYfilename11 ENTRYfilename12 ENTRYfilename13 ENTRYfilename14 ENTRYfilename15 ENTRYfilename16 ENTRYfilename17 topdir corner_dir corner_name 
    set filename Input_entries.txt 
    set fileId [open $filename "w"] 
    puts $fileId $ENTRYfilename 
    puts $fileId $ENTRYfilename3 
    puts $fileId $ENTRYfilename4 
    puts $fileId $ENTRYfilename5 
    puts $fileId $ENTRYfilename7 
    puts $fileId $ENTRYfilename8 
    puts $fileId $ENTRYfilename15 
    puts $fileId $ENTRYfilename14 
    puts $fileId $ENTRYfilename16 
    puts $fileId $ENTRYfilename17 
    close $fileId 

    } 


    proc load_input_entries {} { 
    global ENTRYfilename ENTRYfilename2 ENTRYfilename3 ENTRYfilename4 ENTRYfilename5 ENTRYfilename6 ENTRYfilename7 ENTRYfilename8 ENTRYfilename9 ENTRYfilename10 ENTRYfilename11 ENTRYfilename12 ENTRYfilename13 ENTRYfilename14 ENTRYfilename15 ENTRYfilename16 ENTRYfilename17 

    set fp [open Input_entries.txt] 
     set stuff [read $fp] 
     set lines [split $stuff "\n"] 
      set ENTRYfilename [lindex $lines 0] 
      set ENTRYfilename3 [lindex $lines 1] 
      set ENTRYfilename4 [lindex $lines 2] 
      set ENTRYfilename5 [lindex $lines 3] 
      set ENTRYfilename7 [lindex $lines 4] 
      set ENTRYfilename8 [lindex $lines 5] 
      set ENTRYfilename15 [lindex $lines 6] 
      set ENTRYfilename14 [lindex $lines 7] 
      set ENTRYfilename16 [lindex $lines 8] 
      set ENTRYfilename17 [lindex $lines 9] 
} 
1

Wenn Sie die Flexibilität haben, um das Format der Datei zu definieren, wo der Inhalt gespeichert wird, würde ich empfehlen, den Inhalt in einer Weise zu speichern, so dass das Lesen/Karten, um die Schlüssel zu schreiben und um unabhängig ist. Dadurch können Sie Ihre Benutzeroberfläche aktualisieren, um Eingabefelder hinzuzufügen oder zu löschen, ohne sich Gedanken über die Reihenfolge machen zu müssen, in der sie in der Datei erfasst wurden.

Zum Beispiel Dateiformat etwas dies sein könnte:

Top Directory: <value> 
LEF File: <value> 
. 
. 
. 

Sie werden sorgfältig wählen müssen, um eine Trennlinie zwischen dem Schlüssel (Label) und dem Wert.

Wenn dies in TCL immer verwendet wird, können Sie es einfacher machen, indem Sie ein Array in einer Datei speichern. Dies wird auch schneller, wenn Sie die Datei laden, um die Einträge in der Benutzeroberfläche zu füllen. Beispielsweise könnte Ihr Dateiformat etwas davon sein:

set inputFields("Top Directory") <value> 
set inputFields("LEF File") <value> 
Verwandte Themen