Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Textdedit und Dateien öffnen

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Beatrice28
•->
•->


Anmeldedatum: 12.02.2005
Beiträge: 5

BeitragVerfasst am: 12.02.2005 - 22:21    Titel: Textdedit und Dateien öffnen Antworten mit Zitat

Hallo Jungs,
bin sicher, Ihr könnt mir helfen. Ich will für eine Uniarbeit in meinem Text per Apple Script auf jeder Seite einige Zeilen rauslöschen und dafür andere Zeilen einsetzen.
Jetzt steh ich aber schon am Anfang vor dem Problem, dass das doofe Textedit meine Datei gar nicht aufmacht, sondern schreibt, dass die Datei nicht geöffnet werden kann. Textedit geht zwar auf, aber die Datei geht nicht auf. Was mach ich da falsch? Danke schonmal für Eure Hilfe!!!!!Wink

tell application "textedit"
activate
open "system:users:beatrice:desktop:meintext.txt"
end tell
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 12.02.2005 - 22:36    Titel: Antworten mit Zitat

Hallo Beatrice,

die Pfadangabe stimmt nicht - oder heißt deine Festplatte wirklich "system"? Am flexibelsten bist du, wenn du den Festplattennamen ganz aus dem Spiel lässt und zunächst mal eine Abkürzung verwendest und diese vervollständigst.

Den Pfad zum Desktop bekommst du mit 'path to desktop' - wer hätte das gedacht. Weitere solche Pfadabkürzungen findest du in den OS X Snippets (Thema "Direkte Pfadangaben in OS X" oder so ähnlich).

Nun zum Öffnen deiner Textdatei:

set Pfad to (path to desktop as string) & "meintext.txt"
tell application "TextEdit"
    activate
    
open Pfad
end tell


Dies sollte nun ohne Fehlermeldung funktionieren.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beatrice28
•->
•->


Anmeldedatum: 12.02.2005
Beiträge: 5

BeitragVerfasst am: 12.02.2005 - 22:51    Titel: Antworten mit Zitat

Snow, coooool! Es geht! Daaaaaanke!!!!! Hmmmmm, manchmal wünsch ich mir, ein Mann zu sein Wink
Und jetzt hab ich da als brave Ärztin eine Beispieldatei entworfen mit 2 Sätzen:
------------
Der Sinusknoten leitet die Erregung direkt in den AV-Knoten.
Der AV-Knoten leitet die Erregung ins Hiß`sche Bündel.
-----------

Das Reinschreiben geht mit write perfekt (nach dem Workshop von dieser Website). Nur wie lösche ich jetzt den Teil "Der AV-Knoten" raus und den Teil "leitet die Erregung in den AV-Knoten", sodass da nur mehr eine Zeile steht mit:
"Der Sinusknoten leitet die Erregung ins Hiß´sche Bündel."
Geht das überhaupt mit applescript? Und das ganze muss ich dann bei ca. 20.000 Zeilen mit 3000 Dateien machen - uff.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 12.02.2005 - 23:05    Titel: Antworten mit Zitat

Man nehme:

http://www.fischer-bayern.de/phpBB2/viewtopic.php?t=690

Da TextEdit keine besondere Möglichkeit bietet, per AppleScript einen Text zu durchsuchen und Fundstellen zu ersetzen, macht es wenig Sinn, das Programm überhaupt zu bemühen.

Wenn es reine Textdateien sind, kannst du den Text auch per 'read' einlesen und in einer Variablen verstauen. Danach diese Variable, den Suchtext und den Ersatztext (der ja auch leer sein kann) an den Handler aus obigem Thread übergeben. Danach den geänderten Text wieder zurück in die Datei schreiben.

Hier eine kleine Demo (ohne read- und write-Operationen):

set myText to " Der Sinusknoten leitet die Erregung direkt in den AV-Knoten.
Der AV-Knoten leitet die Erregung ins Hiß`sche Bündel."
set mySearch to "leitet die Erregung direkt in den AV-Knoten.
Der AV-Knoten "
set myReplace to ""

textReplace(myText, mySearch, myReplace)

on textReplace(theText, srchStrng, replStrng)
    tell (a reference to AppleScript's text item delimiters)
        set {od, contents} to {contents, {srchStrng}}
        
try
            set {textList, contents} to {(text items of theText), {replStrng}}
            
set {newText, contents} to {(textList as text), od}
            
return item 1 of result
        on error errMsg number errNbr
            set contents to od
            
error errMsg number errNbr
        end try
    end tell
end textReplace

_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beatrice28
•->
•->


Anmeldedatum: 12.02.2005
Beiträge: 5

BeitragVerfasst am: 12.02.2005 - 23:15    Titel: Antworten mit Zitat

Hmm, also diesen Handler verstehe ich nicht ganz - wie kommt man denn auf sowas? Aber ich werd es mal versuchen. Sehe eine lange Nacht vor mir Wink Ich meld mich, wenn´s geht! Vielen vielen Dank Peter!!!!!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 13.02.2005 - 00:11    Titel: Antworten mit Zitat

Die Text Item Delimiters sind ja eigentlich dazu gedacht, ein bestimmtes Trennzeichen festzulegen, mit dem man einen Textwert aufspalten kann.

Der Default-Wert von AppleScript's text item delimiters ist "" - also nichts. Dieser Wert sollte am Ende des Skripts immer wieder hergestellt werden, da er sonst beibehalten wird, bis der Rechner neu gestartet wird. Das kann in anderen Skripten zu ganz unerwünschten Ergebnissen führen.

Mal angenommen, wir wollen einen Satz in seine einzelnen Wörter zerlegen, dann können wir als Trennzeichen das Leerzeichen (zwischen den einzelnen Wörtern) hernehmen:

set myText to "Dieser Text ist absolut sinnlos."

set AppleScript's text item delimiters to " "

set TextListe to (text items of myText)
--
{"Dieser", "Text", "ist", "absolut", "sinnlos."}
set AppleScript's text item delimiters to ""


Irgendein schlaues Köpfchen ist nun auf die Idee gekommen, dass man z.B. ein bestimmtes Wort als Trennzeichen nehmen könnte. Es taucht dann in der resultierenden Liste nicht auf.

Wenn man nun die Text Item Delimiters wieder auf ihren Default-Wert zurücksetzt und danach die Textliste wieder in einen String umwandelt, fehlt das Wort, das wir vorher als Text Item Delimiter benutzt haben:

set myText to "Dieser Text ist absolut sinnlos."

set AppleScript's text item delimiters to "absolut "

set Liste2 to text items of myText
--
{"Dieser Text ist ", " sinnlos."}
set AppleScript's text item delimiters to ""

set neuerText to Liste2 as string
--
"Dieser Text ist sinnlos."


Benutzt man die Text Item Delimiters zum Suchen und Ersetzen, werden alle entsprechenden Suchbegriffe auf einen Rutsch durch die Ersatzbegriffe ersetzt.

Noch ein kleines Beispiel:

set myText to "Dieser Text ist absolut sinnlos. Das ist absolut genial, gell?"

set AppleScript's text item delimiters to "absolut "

set Liste2 to text items of myText
--
{"Dieser Text ist ", "sinnlos. Das ist ", "genial, gell?"}
set AppleScript's text item delimiters to ""

set neuerText to Liste2 as string
--
"Dieser Text ist sinnlos. Das ist genial, gell?"


Diese Suchmethode ist allerdings case sensitive. Wenn man nach längeren Textpassagen sucht, muss wirklich jedes Zeichen übereinstimmen.

set myText to "Dieser Text ist absolut sinnlos. Absolut genial, gell?"

set AppleScript's text item delimiters to "absolut "

set Liste2 to text items of myText
--
{"Dieser Text ist ", "sinnlos. Absolut genial, gell?"}
set AppleScript's text item delimiters to ""

set neuerText to Liste2 as string
--
"Dieser Text ist sinnlos. Absolut genial, gell?"


Dies alles diente nun nur dazu, das Prinzip etwas zu erläutern. Im Handler von Marc K. Myers ist es dann meisterhaft umgesetzt.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beatrice28
•->
•->


Anmeldedatum: 12.02.2005
Beiträge: 5

BeitragVerfasst am: 13.02.2005 - 02:34    Titel: Antworten mit Zitat

Jetzt versteh´s sogar ich Wink
Zwar funktioniert es noch nicht bei mir, aber die Nacht ist jung!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beatrice28
•->
•->


Anmeldedatum: 12.02.2005
Beiträge: 5

BeitragVerfasst am: 13.02.2005 - 03:11    Titel: Antworten mit Zitat

Ich kann jetzt ersetzen, ich kann in eine datei schreiben, ich kann lesen, ich kann öffnen. Aber: Es klappt einfach nicht. Immer wenn ich ersetze, wird überschrieben, wenn das Ersetzte nicht genau die gleiche Buchstabenzahl hat wie das zu Ersetzende. Jetzt steht im Workshop etwas von einer "for" Funktion. Puuuuuuhhh. Peter!! Hilfeeee!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 13.02.2005 - 13:36    Titel: Antworten mit Zitat

Vor dem Schreiben das Dateiende (eof) auf Null setzen, dann ist der bisherige Dateiinhalt gelöscht. Dann erst den geänderten Text in die Datei schreiben.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter