Es sollte doch kein Fehler geschmissen werden wenn er in die Datei schreiben kann (auch wenn sie schon existiert).
$FO_ANSI hat standardmäßig den Read-Flag gesetzt -> https://www.autoitscript.com/autoit3/docs/f…ns/FileOpen.htm
Beiträge von alpines
-
-
Nein, die WinWait-Funktion würde darauf nicht reagieren.
Standardmäßig sucht sie in den Titeln von links nach rechts und da " - Abschluss" nicht in dem zweiten Titel vorkommt reagiert sie auch nicht.Solltest du mehrere Fenster haben auf die du unterschiedlich reagieren willst, so kannst du dir WinList mal angucken.
Die Funktion spuckt dir alle vorhandenen Fenster zu einem bestimmten Teilstring aus (der ist abhängig von dem Opt: WinTitleMatchMode). -
Kriegst du die Playlist nicht als .m3u oder ähnlich gespeichert in Spotify?
-
Wenn es dir keine Umstände bereitet das IE-Objekt zu nutzen, dann kannst du das darüber viel kürzer lösen.
https://www.autoitscript.com/forum/topic/52…t-html-in-text/ -
Meintest du nicht in deinem Startpost, dass du dir die Wiedergabeliste ausgeben lassen kannst in diesem Format:
1 - Song - Interpret
2 - Song - InterpretWarum lässt du dir das nicht ausgeben und speicherst es in eine Datei.
-
Ich hab kein Spotify, wie wäre es also wenn du uns mal den Link zeigst oder Screenshots davon was du in der Hand hast und womit wir arbeiten können?
-
Natürlich ist das möglich. Kopier die Liste in eine Datei und lies sie mit FileRead aus.
-
So, nun könnte ich Theoretisch die Textdatei in Excel einfügen und "-" als Trennzeichen einstellen.
Wieso willst du Excel dafür verwenden? Das ist als ob du mit einem Löffel versuchst ein Auto zu starten.
Ich gehe mal stark davon aus, dass du keine doppelten Liednamen hast und folglich alle Lieder einzigartig sind.
Was spricht also dagegen einfach den gesamten Ordner mit _FileListToArray einzulesen und das ganze mit zwei For-Schleifen zu verknüpfen?Bei der 1. gehst du die Playlistdatei durch und lässt dir mit den entsprechenden String-Funktionen (oder auch StringRegExp) den Namen und die Position abspeichern und suchst in der zweiten For-Schleife dann nach dem Lied mit den eben genannten Funktionen.
Hast du das Lied gefunden, so verwendest du einfach FileMove($aMusikOrdner[$i], $iAktuellerPlatz & " - " & $aMusikOrdner[$i]).Dabei solltest du aber beachten das du von 001 bis 999 gehen solltest und nicht von 1 bis 999, da die alphanumerische Sortierung dafür sorgt, dass nach 1 nicht 2 kommt, sondern 10.
Eine Funktion die den Index in das Format mit vorangestellten Nullen konvertiert ist sehr einfach zu schreiben. -
In Zukunft verwende ich dort kein true mehr..., is ja wie bei FileExists, aber ich denke auch, dass es die Sache des Programmierers ist, wie er es handhabt.
Es kommt auch auf die Funktionen an die du verwendest.
Mit Sicherheit gibt es UDFs die inkonsistente Rückgabewerte haben und da kann so eine Abfrage schon richtig sein.
AutoIt handhabt Strings, sofern sie nicht leer sind, und Alle Zahlen <> 0 als True.Verwendet man jedoch den Case-Sensitiven Vergleich (== True), so löst die Bedingung nur aus wenn sie wirklich nur True ist und kein "String" oder Zahlen <> 0.
-
Ich hatte StringInStr und das "= True" in Zweifel gezogen. StringInStr scheint schon richtig zu sein. Der "= True"-Vergleich ist aber wie du schreibst nicht falsch aber sinnlos.
Aktualisier' die Seite mal

-
"Warum StringInStr benutzen"
Er sprach nicht nur davon warum man StringInStr benutzt wird, sondern warum du die Abfrage = True dahinter noch hast.
StringInStr gibt schon automatisch bei einem Fund True zurück, somit würdest du nur True = True oder False = True abfragen.
Du kannst dir somit das = True sparen da der Ausdruck If StringInStr() Then die selbe Wahrheitstabelle hat wie If StringInStr() = True.Des Weiteren kann man es sich sparen um den Code leserlicher zu machen. Man verwendet auch oft nicht = False sondern negiert die Ausgabe der Abfrage um es "sprachlicher" zu formulieren.
If StringInStr() Then Wenn String in String vorhanden, dann ...
If StringInStr() = True Then Wenn String in String = wahr ist, dann ...
If Not StringInStr()Wenn nicht String in String, dann ...
If StringInStr() = FalseWenn String in String = falsch ist, dann...Letzlich ist es eine Stilfrage, da jeder unterschiedlich programmiert.
-
Das mag vielleicht bei der Shell so sein aber doch nicht programmintern!
-
In der INI-Datei (settings.ini) habe ich die Anführungszeichen entfernt
Wieso setzt du überhaupt Anführungszeichen? Die sind irrelevant.
-
Lass dir doch mal die einzelnen Werte aus den IniReads ausgeben, eventuell liegt es ja nicht daran sondern an der ListView.
-
Schön, dass es dann doch noch geklappt hat. Ich setz dann mal den grünen Haken für gelöst.
Du kannst das auch machen indem du den 1. Beitrag in diesem Thread bearbeitest und den Threadstatus anpasst. -
-
Kleine Korrektur alpines: Wenn er wenigstens ein ausführbares Skript postet, dass sein Problem aufzeigt.
Er hätte auch alle sensiblen Bereiche rausschnippeln können und dann posten können. Aber so geht das mal gar nicht.
Der Fehler lag nicht in dem Bereich den er uns gepostet hat. Sowas passiert hier leider öfters als man es sich wünscht. -
Hat sich zum Glück erledigt. Ich habe vergessen "HotKeySet" in eine Schleife zu machen.
Ein Paradebeispiel dafür, dass man jemandem nur helfen kann, wenn er auch bereit ist sein Script zu posten.
-
Du kannst auch StringTrimLeft verwenden.
StringTrimLeft($sString, StringInStr($sString, "Hier")) Das schnippelt dir alles links von dem 1. Hier weg.
Dann kannst du StringTrimRight verwenden (zählt von hinten nach vorne) um von hinten alles wegzuschnippeln, oder du verwendest StringBetween wenn du einen Bereich haben willst.Bei RegEx müsstest du nach dem Keyword suchen und bis zum Ende der Zeile lesen StringRegExp($sString, "(Hier).*", 3).
-
Dann brauchst du dir darum glaube ich keine Gedanken zu machen. Wenn du unbedingt auf Nummer sicher gehen willst kannst du das Buch und den Autor ja noch im Skript erwähnen aber ich glaube nicht, dass du eine Klage am Hals hast wenn du es nicht machst.