• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Ordner ist da aber er ist eiegntlich ncith da

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Puh, jetzt sind wir richtig
off-topic.gif



Auch, wenn das arrogant klingt, aber es ist Tatsache... wir sind nicht hier um Schulungen vorzunehmen.
Die Grenze zwischen Schulung, Tipps und Hinweisen ist doch unscharf, oder?

In meinen Augen wäre die eigentliche Antwort auf die Ausgangssituation gewesen:
"Setze das ganze in einen tell Block und adressiere ihn an das dafür zuständige/richtige Programm!"
Erst dann hätte ich eventuell aufgezeigt, wie man es besser machen sollte, denn, wie Du schon angemerkt hast:
Meinem Wissenstand nach ist (war?) "exists" auch immer fehlerhaft.
Je nachdem, mit welcher Partitionierungstabelle die HD bestückt ist.

- - - - - - - - - - - -
haben halt unterschiedliche Auffassungen und das ist gut so :p


Liebe Grüße
Sedna
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
Also AS lernen wollte ich eigentlich nicht hier lernen, da ich das eigentlich schon kann ( natürlich nicht perfekt wie man sieht ;)). Ihr müsst mir im Forum eben nur manchmal auf die Sprünge helfen und Denkansätze geben. Von sogenannten Handlern hab ich aber noch nie was gehört (sind das vielleicht die dinger wie bei JS in klammern). Ich bin jetzt etwa 1 1/2 Jahre ohne diese Handler und die Art wie LittlePixer programmiert ausreichen ausgekommen. Ja, ich weiß so zu Programmieren wäre natürlich besser.

Skript funktioniert einwandfrei. Danke.

@sedna: jetzt weis ich auch woran der Fehler lag.
mfg
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
datei

wie mach ich den das ganze jetzt mit einer Datei?
habs so ausprobiert:
Code:
...
set saved to (path to documents folder as string) & "Datenbank:Data:save.txt" as string
if (my pruefeExistenz("", saved)) then
...

oder so

Code:
...
set saved to (path to documents folder as string) & "Datenbank:Data:" as string
if (my pruefeExistenz(saved, "save.txt")) then
...
oder so

Code:
...
set saved to (path to documents folder as string) & "Datenbank:Data:save.txt" as string
set dataordner to (path to documents folder as string) & "Datenbank:Data:" as string
if (my pruefeExistenz(datenbankordner, "")) then
...

Jedes mal ist noch nicht vorhanden. Ich denk mal diesmal nicht das ein Fehler in AS vorliegt sonder in meiner Pfadangabe. Wie mach es ich richtig?
mfg

PS:Alles Code-schnipsel hier basieren auf irgend so nem Script den ich hier bekommen habe (glaube S. 1)
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Du Scherzkeks, Du hast alles von hier. ;)

Bei dem Handler ist der erste Parameter der Pfad und der zweite der Dateiname.
Wenn der Pfad schon mit dem Dateinamen versehen ist, dann übertrage für den zweiten Parameter einen leere String.

Zwischen und Ordner und Datei gibt es bei diesem Exitenzcheck keinen Unterschied.

Viele Grüße
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Mir fällt noch auf:

Code:
set saved to

Das ist sehr schlecht. Es könnte sich dabei um eine Eigenschaft handeln.

Viele Grüße
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
Wieso, weshalb, warum?

Ich versteh es nicht warum will es nicht funktionieren? habe alle deine Tipps bevolgt. Vermutlich bin cih wieder zu doof
Code:
Code:
----Einleitungsvariablen
set username to do shell script "whoami"
set datenbankordner to (path to documents folder as string) & "Datenbank:" as string
set dataordner to (path to documents folder as string) & "Datenbank:Data:" as string
set savefile to dataordner & "save.txt:" as string

set file_path to dataordner & "admin.txt" as string
read file file_path
set passwort to result


-- prüfen, ob Ordner oder Datei existiert
on pruefeExistenz(pfad, datei)
	try
		considering case
			if (((pfad & datei) as string) is equal to ((alias (pfad & datei)) as string)) then
				return true
			else
				return false
			end if
		end considering
	on error
		return false
	end try
end pruefeExistenz

--datenbankordner
if (my pruefeExistenz(datenbankordner, "")) then
	-- schon da 
else
	-- erstellen
	do shell script "mkdir " & quoted form of POSIX path of datenbankordner
	display dialog "Der Datenbankornder ist unter Dokumente erstellt worden. Er existierte nicht." buttons {"Ok"} default button 1 with icon 2 with title "Achtung!"
end if

--save
if (my pruefeExistenz("", savefile)) is true then
	display dialog "save.txt ist  schon da"
	set lastsavecheckok to "1"
else
	display dialog "Die Speicherdatei ist erstellt worden. Sie existierte nicht." buttons {"Ok"} default button 1 with icon 2 with title "Achtung!"
	set the clipboard to "1 0 1 0 / 1.0.1 2.0.5 547988 1"
	do shell script "pbpaste|cat>~/documents/Datenbank/data/save.txt"
	set the clipboard to ""
	set lastsavecheckok to "0"
end if
...

Event-Protokoll:
Code:
tell current application
	do shell script "whoami"
		"Benedikt"
	path to documents folder as string
		"Macintosh HD:Users:Benedikt:Documents:"
	path to documents folder as string
		"Macintosh HD:Users:Benedikt:Documents:"
	read file "Macintosh HD:Users:Benedikt:Documents:Datenbank:Data:admin.txt"
		" "
	display dialog "Die Speicherdatei ist erstellt worden. Sie existierte nicht." buttons {"Ok"} default button 1 with icon 2 with title "Achtung!"
		{button returned:"Ok"}
	set the clipboard to "1 0 1 0 / 1.0.1 2.0.5 547988 1"
	do shell script "pbpaste|cat>~/documents/Datenbank/data/save.txt"
		""
	set the clipboard to ""
Das hab ich ein wenig verändert, um das besser zu durchblicken:
If (my pruefeExistenz("", savefile)) is true then
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Ist Dir eigentlich klar, dass Du den Ordner in dem die Datei liegen soll nie anlegst?
Somit ist die Datei auch nie vorhanden.

Warum berechnest Du zwei Mal den Pfad zu "Documents"?
"read" führt man so nicht aus. Bitte in der Doku nachsehen.

Viele Grüße
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Reicht es nicht wen sie schon vorhanden ist oder muss ich sie jedes mal den Ordner neu erstellen?
- Du überprüfst, ob "Doucuments/Datenbank" da ist
- Wenn nein, dann legst Du diesen an
- Dein Skript geht weiter und prüft, ob "Documents/Datenbank/Data/Text.txt" da ist

Wo ist da der Sinn? Das wird immer NO liefern.

Ausserdem hast Du mit der Übergabe der Parameter nichts gelernt.
Ich sagte, dass der erste Parameter der Pfad ist und der zweite der Dateiname. Ist der Dateipfad schon mit dem Dateinamen versehen, dann übergibst Du den ersten Parameter und für den zweiten einen leeren String.

Aber Du handelst nach Zufall. Bei der ersten Prüfung ist es richtig und bei der zweiten falsch.

Du hast nur Glück, dass sich Dein Fehler nicht auf das Ergebnis auswirkt, da der Händler intern so trivial ist.
In Zukunft wirst Du wahrscheinlich weniger Glück damit haben.

Funktioniert so wie ich es verwende einwandfrei.
Glaube ich nicht, da Dein Skript bei mir gar nicht funktioniert.

Viele Grüße
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
Glaube ich nicht, da Dein Skript bei mir gar nicht funktioniert.
Das liegt daran das der Skript ja noch nicht fertig ist. Bei mir funktioniert er (bis auf die genannten Fehler in diesem thread), da ich die Ordnerstruktur schon habe. Durch diesen Skript soll die Ordnerstruktur repariert werden falls etwas fehlt.

Aktuell sieht das so aus:
Code:
set username to do shell script "whoami"
set datenbankordner to (path to documents folder as string) & "Datenbank:" as string
set dataordner to datenbankordner & ":Data:" as string
set savefile to dataordner & "save.txt:" as string


-- prüfen, ob Ordner oder Datei existiert
on pruefeExistenz(pfad, datei)
	try
		considering case
			if (((pfad & datei) as string) is equal to ((alias (pfad & datei)) as string)) then
				return true
			else
				return false
			end if
		end considering
	on error
		return false
	end try
end pruefeExistenz

--datenbankordner
if (my pruefeExistenz(datenbankordner, "")) is true then
	-- schon da 
	display dialog "datenbank ist da"
else
	-- erstellen
	do shell script "mkdir " & quoted form of POSIX path of datenbankordner
	display dialog "Der Datenbankornder ist unter Dokumente erstellt worden. Er existierte nicht." buttons {"Ok"} default button 1 with icon 2 with title "Achtung!"
end if

--datenbankordner
if (my pruefeExistenz(dataordner, "")) is true then
	-- schon da
	display dialog "dataordner schon da"
else
	-- erstellen
	do shell script "mkdir " & quoted form of POSIX path of dataordner
	display dialog "Der Dataordner ist in der Datenbank erstellt worden. Er existierte nicht." buttons {"Ok"} default button 1 with icon 2 with title "Achtung!"
end if

--save
if (my pruefeExistenz(savefile, "")) is true then
	display dialog "save.txt ist  schon da"
	set lastsavecheckok to "1"
else
	display dialog "Die Speicherdatei ist erstellt worden. Sie existierte nicht." buttons {"Ok"} default button 1 with icon 2 with title "Achtung!"
	set the clipboard to "1 0 1 0 / 1.0.1 2.0.5 547988 1"
	do shell script "pbpaste|cat>~/documents/Datenbank/data/save.txt"
	set the clipboard to ""
	set lastsavecheckok to "0"
end if

Bei der aktuellen Version bekomm ich beim zweiten check ein false zurück obwohl der Ordner existiert. Das else macht dann seine Arbeit obwohl es nicht seine Arbeit machen soll. Eigentlich ist der Ordner ja da, wird aber durch den Skript nicht gefunden und ergibt ein Error. Liegt das daran, dass ich zweimal nach Ordner frage und die Variablen schon "belegt" sind?

Littlepixel hat ja geschrieben dass ich ":data:" noch anlegen müsste. Hab ich jetzt auch gemacht (also in dem Skript angelegt, auf der Festplatte existierte dieser Pfad schon). Hilft mir aber nicht viel weiter (s.O.).
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Echt ein hartes Pflaster hier!

Lass Dir mal "dataordner" ausgeben.
Schaue und staune ;) So kann das nie was werden.

"sedna" > siehst Du, wir brauchen hier Grundlagen :p

Viele Grüße
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
Lass Dir mal "dataordner" ausgeben.
Schaue und staune ;) So kann das nie was werden.

"sedna" > siehst Du, wir brauchen hier Grundlagen :p

Viele Grüße

warum kannst du mir nicht einfach sagen das ich nen Doppelpunkt zu viel habe. Das ist doch keine gGrundlage.
Trotzdem ändert das noch immer nichts am Scriptergebnis
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Lass Dir mal "dataordner" ausgeben
warum kannst du mir nicht einfach sagen das ich nen Doppelpunkt zu viel habe
Weil ich nicht Dein Lehrer bin.
Ich habe Dir gesagt was nicht stimmt und jetzt beschwerst Du Dich auch noch. Du solltest vielleicht erkennen, dass Du jetzt so etwas gelernt hast und Dich beim Nächstenmal darin erinnern wirst.

Du beschwerst Dich hier andauernd "es geht nicht, es geht nicht".

Das ist doch keine gGrundlage

Der Verlauf zeigt das eindeutig. Dir fehlt es an den elementarsten Dingen.
Jeder würde sich mal die Pfade ausgeben lassen und das überprüfen.
Auch das Du meinst die Groß-/Kleinschreibung sei bei AS egal signalisiert, dass Du keinerlei Grundlagen hast.
Du prüfst die Existenz einer Datei, die auf Grund der Pfadangabe niemals existent sein kann... und und und.

Ich sehe Deine Bereitschaft es umzusetzen, aber ich sehe auch wie mühselig es ist.
Vielleicht ist das einfach nicht so Dein Stärke.

Das hier sind zunächst Logiksachen und haben mir AS erstmal gar nichts zutun.

Viele Grüße
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Ich greife hier mal neben der Sache ein:

Jeder einzelne Punkt ist natürlich ein einfacher Fehler. Die Summe deiner Fragen und Umsetzungen zeigt aber, dass du das grundlegend nicht begriffen hast. Du frickelst. Und da hat Pixelinchen einfach Recht, dass dir das nichts bringt. Selbst wenn du das jetzt auch wieder gefrickelt bekommst, droht an der nächsten Ecke die nächste Falle.

Was hast du denn für einführende Literatur?
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
keine Lektüre :-D ich benutz immer nur tuts und andere AS Skripte und bastle mir dann was zusammen. So kostenlose Bücher die ich mal angefangen zu lesen habe, hab ich alle wieder gelöscht. Irgendwie kam ich mit denen nicht so gut klar.
So ohne Bücher bin ich gut klar gekommen, hängen geblieben bin ich aber immer nur an speziellen Sachen, die ich so in den Büchern vermutlich nicht finden würde oder ich mir sowieso nicht merken könnte.
So lange es funktioniert ist mir eigentlich alles drumherum egal. Ich versuch AS nicht zu lernen sondern Probleme mit AS zu lösen.
Ihr müsst mir jetzt auch nicht helfen AS beizubringen, ich will noch das kleine Problemchen hier lösen und dann ist mein Skript fertig und ich werde mich wohl erstmal nen halbes Jahr nicht mehr mit AS beschäftigen, weil es kein Grund dafür gibt ;).

@LittlePixel: Du sagst du seist nicht mein Lehrer, tust aber dann das was ein Lehrer machen würde; Mich den Fehler selbst finden lassen.

mfg
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Solange du dich damit nicht grundsätzlich beschäftigen möchtest, wird das hier zum Dauerunterricht. Du solltest noch einmal hinterfragen, was du von anderen forderst.
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
Der Fehler liegt in der Einzahl.

Also ich seh hier nur ein Problem: Ich will prüfen ob ein Ordner exisitert, was ich aber nicht hinbekomme. Und wen es zwei wären, ist das verboten?

Kann man vielleicht wieder b2t kommen? Ihr müsst mir nicht beim Skript helfen, wäre nur nett von euch, also nörgelt doch bitte nicht irgendwie herum was ich alles falsch mache. Das kann ich mir auch woanders anhören.
mfg
 

Bomberzocker

Auralia
Registriert
08.06.08
Beiträge
202
bitte closen. Habe ne Lösung gefunden die Funktioniert.
Code:
on pruefeExistenz(pfad, datei)
	try
		alias (pfad & datei)
		return true
	on error
		return false
	end try
end pruefeExistenz