[GastForen Programmierung/Entwicklung AppleScript Text in "Liste.txt" schreiben via Dialog-Eingabe

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Text in "Liste.txt" schreiben via Dialog-Eingabe

ehwda
Beiträge gesamt: 66

15. Aug 2014, 11:34
Beitrag # 1 von 3
Bewertung:
(4474 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Mit dem folgenden Script kann man eine Liste in eine .txt-Datei schreiben.

Code
set testD to "versuchversuch.txt" 
set Ort to (path to desktop from user domain) as string
set datei to Ort & testD as alias

try
close access datei --- falls die Datei schon "offen" ist
end try

set schreib to display dialog "welchen Text in die Liste?" default answer " " buttons {"keinen", "diesen"} default button 2

set diesenText to text returned of schreib
set knopf to button returned of schreib
if knopf = "keinen" then error number -128 --- Abbruch
if knopf = "diesen" then

open for access datei with write permission

write diesenText & "\n" to datei starting at eof

close access datei

end if


Was ich gerne gewusst hätte:
1. Wie stelle ich es an, dass das Script Begriffe, die in der Text-Datei schon vorhanden sind, ohne Rückmeldung ignoriert?
2. Wie kann ich mehrere Begriffe im Dialog eingeben - durch ";" getrennt -, die dann als einzelne Zeilen in der Text-Datei erscheinen?

Herzlichen Dank für jede Hilfe.
Gruss, Eugen
X

Text in "Liste.txt" schreiben via Dialog-Eingabe

Hans Haesler
  
Beiträge gesamt: 5826

15. Aug 2014, 14:03
Beitrag # 2 von 3
Beitrag ID: #531061
Bewertung:
(4428 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Eugen,

in der zweiten Zeile sollte 'as Unicode text' verwendet werden (statt 'as text'). Das sei besser wurde einem vor vielen Jahren gesagt.

Das 'as alias' generiert eine Fehlermeldung, wenn die Datei nicht existiert. Also ohne 'as alias', aber später überall im Script 'file datei' verwenden.

Die Datei vorsorglich schliessen wäre okay. Aber besser ist, dafür zu sorgen, dass sie bei einem Problem beim Schreiben dennoch geschlossen wird. Das erreicht man mit 'try'-Wickeln.

Zu Deinen Fragen:
1. Zum Prüfen, ob eine Eingabe schon in der Datei vorhanden ist, muss diese vorgängig in eine Variable gelesen werden. Das Ergebnis in eine Liste verwandeln und dann kann mit 'is in' geprüft werden, ob die Liste den aktuellen Ausdruck schon als Element enthält.

2. Die Eingabe von strichpunkgetrennten Begriffen ist möglich. Dazu wieder die text item delimiters einsetzen.

Der folgende Code ist nicht kommentiert. Zum einen ist er selbsterklärend, zum anderen wurde vorstehend schon alles gesagt.

Code
set testD to "versuchversuch.txt" 
set Ort to (path to desktop from user domain) as Unicode text
set datei to (Ort & testD)

set curString to ""
set curList to {}
try
set curString to read file datei
end try
if curString is not "" then
set AppleScript's text item delimiters to return
set curList to every text item of curString as list
set AppleScript's text item delimiters to {""}
end if

set schreib to display dialog "welchen Text in die Liste?" default answer "" buttons {"keinen", "diesen"} default button 2

set diesenText to text returned of schreib
set knopf to button returned of schreib
if knopf = "keinen" then error number -128 --- Abbruch
if knopf = "diesen" then

set AppleScript's text item delimiters to {";"}
set textList to every text item of diesenText as list
set AppleScript's text item delimiters to {""}

repeat with n from 1 to count of textList
set curItem to item n of textList
if not (curItem is in curList) then
set end of curList to curItem

open for access file datei with write permission
try
write curItem & return to file datei starting at eof
close access file datei
on error
try
close access file datei
end try
end try
end if

end repeat

end if

Sollte dennoch etwas nicht klar sein: nur fragen. :-)

Gruss, Hans


als Antwort auf: [#531052]
(Dieser Beitrag wurde von Hans Haesler am 15. Aug 2014, 14:04 geändert)

Text in "Liste.txt" schreiben via Dialog-Eingabe

ehwda
Beiträge gesamt: 66

15. Aug 2014, 17:10
Beitrag # 3 von 3
Beitrag ID: #531068
Bewertung:
(4399 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank, es gehen wieder ein paar Lichter auf!

Gruss, Eugen


als Antwort auf: [#531061]