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

Pfadproblem zum x-ten Mal

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Heiner
•-->
•-->


Anmeldedatum: 03.12.2005
Beiträge: 62
Wohnort: Moers

BeitragVerfasst am: 10.02.2008 - 19:55    Titel: Pfadproblem zum x-ten Mal Antworten mit Zitat

Hallo allerseits,

ich brauche mal wieder eure Hilfe.

Kurzbeschreibung:
- Mein Programm erzeugt (beim Erststart) für den Benutzer einen Ordner 'Listen_Data':
set pfad to do shell script "mkdir -p ~/Documents/Listen_Data"

- Dieser Ordner kann innerhalb des persönl. Verzeichnises beliebig verschoben werden.

- Der Pfad des Ordners wird jedesmal (bei Bedarf) abgefragt und in einer Variablen 'thePath' abgelegt:
( do shell script "find ~ -name " & suchVerzeichnis & " -type d -print")

Das Ergebnis kann z.B. so aussehen: "~/Documents/Listen_Data"
(Die Tilde ist somit immer dabei!)

- Nun soll eine Datei mit dem Namen 'Titel_Data' in den Ordner 'Listen_Data' abgelegt werden.

Und hier beginnt mein Problem:
In dem folgenden Handler wird die Pfadzusammenstellung filePath nicht verstanden.

Code:

on sichernTitel()
   -- Einsammeln der Daten
   set dieListe to ""
   set anzahl to (count of data rows of listendaten)
   repeat with i from 1 to anzahl
      set dieListe to dieListe & (contents of data cell "listen" of data row i of listendaten) & return
   end repeat
   set dieListe to (dieListe & eof)
   
   log thePath -- "~/Documents/Listen_Data"
   try
      set filePath to POSIX path of (thePath & "/" & "Titel_Data")
      log filePath -- "/~:Documents:Listen_Data:Titel_Data"
      set refNum to (open for access file filePath with write permission)
      set eof refNum to 0
      write dieListe to refNum starting at eof
      close access refNum
   on error
      close access refNum
   end try
end sichernTitel


Kann mir jemand helfen?

Grüße
Heiner
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 11.02.2008 - 19:24    Titel: Antworten mit Zitat

Das Problem ist die Tilde (~). Die wird so nicht richtig aufgelöst.

Das siehst du daran, dass du einen Mix aus POSIX & MAC-Pfad hast:
log filePath -- "/~:Documents:Listen_Data:Titel_Data"

Um den Pfad zum Documents-Folder relativ aufzulösen, versuchs mal so:
POSIX path of (((path to "docs") & "Listen_Data:") as text)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Heiner
•-->
•-->


Anmeldedatum: 03.12.2005
Beiträge: 62
Wohnort: Moers

BeitragVerfasst am: 11.02.2008 - 19:59    Titel: Antworten mit Zitat

Hallo iScript,

folgender Befehl tut's:

Code:
set a to (path to "docs") & "Listen_Data:" & "TitelData" as string


Das Problem ist aber ein ganz anderes.

Der Benutzer des Programms (auf einem ganz anderen Rechner) kann den vom Programm erstellten Ordner 'Listen_Data' (für den das Programm das Verzeichnis 'Dokumente' nur als 'default location' auswählt) beliebig verschieben. So, dass z.B. der abgefragte Pfad (user location) folgende Form haben kann:
log thePath -> ~/Ordner1/Ordner2/Listen_Data,
oder
log thePath -> ~/Documents/Ordner1/Listen_Data.

Das Problem ist, wie 'übersetzt' man ganz allgemein diesen Pfad?

Gruß

Heiner
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 11.02.2008 - 20:12    Titel: Antworten mit Zitat

POSIX path of (path to "cusr") statt "~"
Die Tilde löst (soweit ich weiss) nur die shell richtig auf.
z.B. so:
do shell script "cd ~;pwd"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Heiner
•-->
•-->


Anmeldedatum: 03.12.2005
Beiträge: 62
Wohnort: Moers

BeitragVerfasst am: 11.02.2008 - 20:50    Titel: Antworten mit Zitat

Ich habe eine 'klassische' (?) Lösung gefunden. Ein ziemlich umständliches Gebastele, aber es scheint zu funktionieren. Die entsptechenden Zeilen lauten:
Code:
try
      set a to (POSIX file thePath) as string
      set anz to count of items of a
      set anhang to ""
      repeat with i from 4 to anz
         set anhang to anhang & item i of a
      end repeat
      set basis to path to "cusr" as string
      set filePath to basis & anhang & ":TitelData" as string
      set refNum to (open for access file filePath with write permission)
      set eof refNum to 0
      write dieListe to refNum starting at eof
      close access refNum
   on error
      close access refNum
   end try



Deinen Lösungsvorschlag über shell script werde ich mal in Ruhe überprüfen. Ich melde mich wieder!

Danke

Heiner
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Heiner
•-->
•-->


Anmeldedatum: 03.12.2005
Beiträge: 62
Wohnort: Moers

BeitragVerfasst am: 12.02.2008 - 22:09    Titel: Antworten mit Zitat

Hallo iScript,

ich hab noch mal im UNIX-Schmöker nachgelesen, aber leider ist es mir nicht gelungen, mit Hilfe von cd und pwd den Pfad herauszulösen. (Um ehrlich zu sein, ich kann das auch gar nicht so richtig.)
Macht nix, die AS-Lösung tut es ja auch.

Noch mal Danke

Heiner
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 12.02.2008 - 23:07    Titel: Antworten mit Zitat

do shell script "cd ~;pwd"
liefert dir den pfad zum home-directory als string in POSIX-Manier:
"/Users/username"
sprich: die tilde wird aufgelöst.
bewirkt also exakt das gleiche wie:
POSIX path of (path to "cusr")

cd ~ wechselt in das homeverzeichnis
; hängt den nächsten befehl an
pwd gibt das aktuelle verzeichnis aus

diesen pfad kannst du dann beliebig wieder zusammenfrickeln mit deinem suchergebnis. oder aber du bleibst in der shell, und schreibst auch per shell in deine datei.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Heiner
•-->
•-->


Anmeldedatum: 03.12.2005
Beiträge: 62
Wohnort: Moers

BeitragVerfasst am: 13.02.2008 - 13:05    Titel: Antworten mit Zitat

In der Tat: beide Befehle liefern (bis auf das slash (/) ) am Ende das gleiche Ergebnis.
Und was das Schreiben in eine Datei per shell angeht, so bleibe ich lieber Schuster.

Grüße
Heiner
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio 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