Hallo Jörg, willkommen im Forum.
Beiträge von Professor Bernd
-
-
-
Wenn zwei Operatoren die gleiche Priorität besitzen, wird der Ausdruck von links nach rechts ausgewertet.
AutoIt
Alles anzeigenIf True Or True And False Then ; Ergibt => False MsgBox(0, "", "True") Else MsgBox(0, "", "False") EndIf If True And False Or True Then ; Ergibt => True MsgBox(0, "", "True") Else MsgBox(0, "", "False") EndIf
Bestätigt.
-
Hmm, ... Manuel Franco, ... hmm ... , ist das nicht der Typ, der das ganze Geld von so 'nem nigerianischen Prinzen bekommen hat?
-
Eins könntest du vielleicht noch ändern, denn da ist mir ein "Sie" reingerutscht, das in der Hilfe glaube ich eher nicht benutzt wird. Aber entscheide du.
Statt: "Die von AutoIt verwendete Suchreihenfolge hängt davon ab, welche Form von #include Sie verwenden."
Besser: "Die von AutoIt verwendete Suchreihenfolge hängt davon ab, welche Form von #include verwendet wird.
Ansonsten: Prima und danke schön.
Bernd.
-
Schlüsselwort #include
Schlecht: "Der von AutoIt verwendete Suchordner ist unterschiedlich, je nachdem welche Form von #include verwendet wird. Die untenstehenden Tabellen zeigen welche Ordner bei den beiden Formen durchsucht werden."
Gut: "Die von AutoIt verwendete Suchreihenfolge hängt davon ab, welche Form von #include Sie verwenden. Die Tabellen unten zeigen für beide Formen die Reihenfolge, in der die Verzeichnisse durchsucht werden."
Bernd.
-
-
-
Das finde ich nichtssagend. Es mag aus der Sicht des versierten Programmierers klar sein, aber der wird wohl auch nicht in die Hilfe schauen. Dem Hilfesuchenden helfen Formulierungen wie "Um dieses Vorgehen zu verhindern ist ein absoluter Pfad zu verwenden" nicht. Das wirft höchsten weitere Fragen auf: Welches Vorgehen? Wo soll ein absoluter Pfad verwendet werden? Wie soll das gehen, wenn ein absoluter Pfad zurückgegeben wird und ich soll einen absoluten Pfad eingeben, ... wie jetzt?
Auch solche Sachen wie
Um den Laufwerksbuchstaben von $sBasePath zu ermitteln ist "\" zu übergeben.Um $sBasePath zurückzugeben ist "" oder "." zu übergeben.
sind nicht hilfreich. Wo ist das einzugeben? In $sBasePath, oder in $sRelativePath? Ums rauszufinden teste ich, mache aber den schon genannten Fehler ein "\" zuviel oder zu wenig einzugeben, => nichts finde ich raus => Frust. Hilfe sollte helfen. Aber egal, ich habs mitgeteilt, macht was draus.
-
Hallo Tweaky. Ich dachte für mich, wenn du das hier alles liest, fällst du in Ohnmacht.
Dann steht bei Rückgabewert:
"Gibt einen relativen Pfad zurück der relativ zu $sBasePath erzeugt wird. Um dieses Vorgehen zu verhindern ist ein absoluter Pfad zu verwenden."... Ich nehme mal die Formulierung von BugFix als Grundlage. Mein Vorschlag:
Erstellt einen absoluten Pfad aus einer relativen Pfadangabe ($sRelativePath) im Verhältnis zu $sBasePath. Relative Pfade dürfen nicht mit "\" beginnen. Wird $sBasePath angegeben, ist ein absoluter Pfad zu übergeben. Wird der $sBasePath weggelassen, wird standardmäßig @WorkingDir verwendet.Ich würde mich sehr freuen, wenn der Hinweis "Relative Pfade dürfen nicht mit "\" beginnen." aufgenommen wird, da es gerade gestern wirklich zu meiner Verwirrung gesorgt hat, bis autoBert das aufgeklärt hat.
-
Das ist eine Selbstverständlichkeit. Relative Adressierung geht nur mit "." oder ".."
Also ich finde es gut, wenn es in der Hilfe dabei steht. Wie man in meinem Beipsiel oben sehen kann, macht einen so ein semi-rela-abso Pfad schonmal durcheinander. Da @ScriptDir keinen "\" zurückgibt (außer im LW-Root), muss man im relativen Teil der Pfadangabe einen "\" hinzufügen.
_PathFull(@ScriptDir & "\..\..\test")
So entsteht der Eindruck, man müsse halt standarmäßig vor dem "..\" ein "\" einfügen. Jetzt weiß ich, dass das nicht stimmt, aber vor dem Tipp von autoBert war mir das nicht klar.
-
-
Nach dem Tipp von autoBert zeigt auch mein weiter oben beschriebener Fall das erwartete Ergebnis.
Local $sTestPath = _PathFull("\Dir-1\Dir-2\test", "F:\Dir-1\Dir-2\Dir-3\Dir-4") ; <== Falsch.
Local $sTestPath = _PathFull("Dir-1\Dir-2\test", "F:\Dir-1\Dir-2\Dir-3\Dir-4") ; <== Richtig.
MsgBox($MB_SYSTEMMODAL, "", @ScriptDir & @CRLF & $sTestPath)
Das sollte hinzugefügt werden. Ich nehme mal die Formulierung von BugFix als Grundlage. Mein Vorschlag:
Erstellt einen absoluten Pfad aus einer relativen Pfadangabe ($sRelativePath) im Verhältnis zu $sBasePath. Relative Pfade dürfen nicht mit "\" beginnen. Wird $sBasePath angegeben, ist ein absoluter Pfad zu übergeben. Wird der $sBasePath weggelassen, wird standardmäßig @WorkingDir verwendet.
Edit: Leichte Korrektur.
-
Professor Bernd: Du benutzt den relativen Path falsch, dein erwartetes Ergebnis bekommst du mit:
...
Local $sTestPath = _PathFull("..\..\test", "F:\Dir-1\Dir-2\Dir-3\Dir-4")
Ah, verstehe, der "\" am Anfang war zuviel.
Aber was machen wir nun mit der Beschreibung in der Hilfe? Kann das jemand so zusammenfassen, dass es einen Sinn ergibt?
-
Ich verwende meine eigene Funktion: Pfad-Funktion mit Struktur
Interessanterweise habe ich deine Funktion gerade gestern angeschaut, als ich nach einer Möglichkeit gesucht habe, um den Dateinamen + Endung aus einem Pfad zu bekommen.
ConsoleWrite( _WinAPI_GetFullPathName("..\Beispiele\") & @CRLF)
Genau sowas habe ich gesucht, das auch das kann:
CodeLocal $sTestPath = "D:\Dir-A\Dir-B\Dir-C\" ConsoleWrite( _WinAPI_GetFullPathName($sTestPath & "..\..\Beispiele\") & @CRLF)
Sowas brauche ich öffter, und damit funktionierts wunderbar. Danke dafür!
-
_PathSplit, würde ich auch nicht mehr nehmen, einfach viel zu umständlich (für meinen Geschmack). Warum soll ich für jeden möglichen Pfadteil vorher eine Variable deklarieren, wenn ich dann nur 1 davon benötige und als Return sowieso ein Array mit allen Werten kommt?
Was nutzt du denn statt _PathSplit?
Und gibt es außer _PathFull eine andere Möglichkeit, um Pfadangaben mit Punkten in absolute Pfade zu wandeln? (z. B. @ScriptDir & "\..\..\MeinProgDir\test.txt")
-
Da gebe ich dir in allen Punkten recht.
Der Gedanke bei dieser Funktion war wohl, $sRelativePath in $sBasePath zu finden und den linken Teil, falls gefunden, der bei $sRelativePath fehlt, zu ergänzen.
Bei meinen Tests habe ich genau das berücksichtigt und den Pfad sowohl im $sRelativePath als auch im $sBasePath entsprechen vorher erstellt. Ich weiß jetzt gerade nicht aus dem Stehgreif, ob Pfadangabe einfach so mit den Punkten angegeben werden können, z. B. @ScriptDir & "\..\..\MeinProgDir\test.txt". Dafür benutze ich _PathFull des öfteren.
Edit: Gerade getestet:
MsgBox(0, "", @ScriptDir & "\..\..\MeinProgDir\test.txt") => löst die Angaben mit den Punkten NICHT auf. Ergebnis:
"E:\Dir-1\Dir-2\Dir-3\Dir-4\test\..\..\MeinProgDir\test.txt"
-
Bitnugger Hihi, sehe ich genauso. Das hört sich an wie:
"... Der neue absolute Pfad wird zurückgegeben, wenn sie einen alten absoluten Pfad eingeben."
Aber mal im Ernst, das bei Rückgabewert stimmt einfach nicht. Es wird kein relativer Pfad zurückgegeben, sondern ein absoluter. Man gibt ein:
"\..\..\test" und bekommt raus:
"C:\Neuer Ordner\test"
Somit könnte man den ersten Teil recht einfach korrigieren:
Falsch: "Gibt einen relativen Pfad zurück der relativ zu $sBasePath erzeugt wird."
Richtig: "Gibt einen absoluten Pfad zurück der relativ zu
$sBasePath$sBaseDrive erzeugt wird. (Es kann zwar ein Pfad eingegeben werden, z. B. @ScriptDir, aber es wird nur der Laufwerksbuchstabe berücksichtigt.)"Scheinbar wird $sBasePath als $sBaseDrive benutzt, denn egal was ich eingegeben habe, es wurde nur der Laufwerksbuchstabe geändert.
1. Beispiel:
AutoItLocal $sTestPath = _PathFull("\..\..\test", "F:\Dir-1\Dir-2\Dir-3\Dir-4") MsgBox($MB_SYSTEMMODAL, "", @ScriptDir & @CRLF & $sTestPath)
In diesem Beispiel lag mein Script (kompiliert oder nicht war egal) in
"E:\Dir-1\Dir-2\Dir-3\Dir-4\test" => nach meinem Verständnis müsste herauskommen
"F:\Dir-1\Dir-2\test" => aber es raus kam
"F:\test"
2. Beispiel
CodeLocal $sTestPath = _PathFull("\Dir-1\Dir-2\test", "F:\Dir-1\Dir-2\Dir-3\Dir-4") MsgBox($MB_SYSTEMMODAL, "", @ScriptDir & @CRLF & $sTestPath)
Auch in diesem Beispiel lag mein Script (kompiliert oder nicht war egal) in
"E:\Dir-1\Dir-2\Dir-3\Dir-4\test" => nach meinem Verständnis müsste herauskommen
"F:\Dir-1\Dir-2\Dir-3\Dir-4\Dir-1\Dir-2\test" => aber es raus kam
"F:\Dir-1\Dir-2\test"
Wie gesagt, für mich sieht es so aus, als ob nur der Laufwerksbuchstabe geändert/hinzugefügt wurde.
Der zweite Teil unter "Rückgabewert" "Um dieses Vorgehen zu verhindern ist ein absoluter Pfad zu verwenden." macht nur bedingt Sinn. Wie Bitnugger schon sagte, dass "man sich den Umweg mit diese Funktion ersparen kann, wenn man direkt mit absoluten Pfaden arbeitet" scheint zuzutreffen. Gibt man einen absoluten Pfad ein, kommt der gleiche absolute Pfad raus.
Summa summarum scheint es sich so zu verhalten:
- Wird ein absoluter Pfad eingegeben, kommt der gleiche absoluter Pfad raus.
- Wird ein relativer Pfad eingegeben, komm ein absoluter Pfad raus, relativ zu $sBasePath .
- Allerdings scheint statt $sBasePath eher $sBaseDrive zu stimmen, denn nur der Laufwerksbuchstabe wird geändert/hinzugefügt.
Was meint ihr dazu?
-
Hallo Leute, hier ein kleiner Fall.
Als erstes steht da:
"Erstellt einen Pfad basierend auf dem relativen Pfad, der vom Benutzer übergegeben wird. Der neue absolute Pfad wird zurückgegeben"
Dann steht bei Rückgabewert:
"Gibt einen relativen Pfad zurück der relativ zu $sBasePath erzeugt wird. Um dieses Vorgehen zu verhindern ist ein absoluter Pfad zu verwenden."
Das bei Rückgabewert ist doch irgendwie Unsinn, oder? (Das ist schon in der EN Hilfe so.)
-
Bitnugger Leider verstehe ich noch nicht ganz, was gemeint ist. Außer in der au3.user.calltips.api konnte ich keine AutoIt Funktionen finden.
SciTEStartup.lua ; für mich die wichtigste Datei!
Auch hier sind bei mir keine AutoIt Funktionen drin. Die au3.user.calltips.api ist zwar bei mir leer, aber da hat eine Recherche gezeigt, wofür sie gut ist. Die ist also soweit klar. Aber für mit den anderen kann ich nichts anfangen. Kannst du mal ein Beispiel aus den anderen Dateien zeigen?