Tratsch rund um Autoit / Autoit Talk | kleinere Fragen

06/03/2013 17:40 YatoDev#1336
würde das viel einfacher machen

so im groben :
PHP Code:
$lied Guictrlread() ; halt das lied was zur playlist dazu gefügt werden soll
$FileHandle 
FileOpen("playlistfile.txt",1)
FileWrite("playlistfile.txt",$lied
oder ich verstehe nicht was du meinst und ich kann das am handy auch nicht austesten
06/03/2013 17:51 lolkop#1337
Quote:
Originally Posted by Kilroy. View Post
Hey,

ich wollte meinen 'Musicplayer' mit einer Add Song to Playlist funktion verbessern, aber irgendwie fügt er mir das neue Lied nicht hinzu..

Hier der code zum erstellen der Playlist
und hier der code der das neue Lied hinzufügen soll ähnelt dem anderen:

Ich hab mich schonmal im Internet umgeguckt und diesen code gefunden. Es soll mit dem code, das vorhandene auslesen und mit dem neuen wieder reinschreiben..
Code:
IniWrite(@ScriptDir & "\Playlist.kilroy", "Playlist", IniReadSection(@ScriptDir & "\Playlist.kilroy", "Playlist") & "Lied" & $i - 1, $fSplit[0] & "\" & $fSplit[$i])
Mfg
Kilroy.
du solltest deine playlist selbstverständlich im speicher deines laufenden tools sichern, und von dort aufrufen, statt ständig eine datei einzulesen o0

verstehe garnicht, wozu du überhaupt eine datei schreibst. das macht eigentlich nur beim beenden deines programmes sinn.
06/03/2013 18:29 YatoDev#1338
Hat jemand eine gute und simple UDF um .rar /.zip und sowas zu entpacken ? :)
06/03/2013 18:50 .yorliK#1339
Die Datei is dafür da um nicht immer ne Playlist zuerstellen wenn man das Programm beendet hat. Deshalb hab ich alles über die Playlist Datei gemacht..

Wenn eine Playist erstellt wird, wird in die Playlist.kilroy mit diesem code:
das geschrieben
Lied0=[PFAD DER MP3]
Lied1=[PFAD DER MP3]

Jetzt möchte ich durch den Button 'Add+' ein Lied zur Playlist hinzufügen(über FileOpenDialog).
Ich hab im Internet so'n code gefunden, den ich für mein Programm umgeschrieben hab.
Code:
IniWrite(@ScriptDir & "\Playlist.kilroy", "Playlist", IniReadSection(@ScriptDir & "\Playlist.kilroy", "Playlist") & "Lied" & $i - 1, $fSplit[0] & "\" & $fSplit[$i])
Funktion ist das er die Playlist.kilroy ausliest und diese dann mit dem neugewählten Lied in die Playlist.kilroy setzt.
Bsp:
Lied0=[PFAD DER MP3]
Lied1=[PFAD DER MP3]
Lied2=[PFAD DER MP3]

Hoffe es ist jetzt verständlicher..
MfG
Kilroy.
06/03/2013 19:07 lolkop#1340
Quote:
Originally Posted by Kilroy. View Post
Die Datei is dafür da um nicht immer ne Playlist zuerstellen wenn man das Programm beendet hat. Deshalb hab ich alles über die Playlist Datei gemacht..
um also zu verhindern, das einmalig eine datei auf die hdd geschrieben, bzw von der hdd gelesen wird, schreibst/liest du während der laufzeit ständig auf/von der hdd?

ich denke du hast hier einen sehr, sehr groben denkfehler... festplattenoperationen sollten, wann immer möglich vermieden werden. diese sind ineffizient und auf dauer sogar hardwareschädigend.
06/03/2013 19:37 Achat#1341
@Kilroy.

Iniwrite wird richtig unangenehm langsam, je größer die Datei.
Zudem funktioniert Iniwrite/read nicht mit Handles, was das ganze nochmal verlangsamt.
Man sollte eine Datei immer zuerst mit FileOpen öffnen und das Handle verwenden.

Du könntest z.B. Array to String benutzen,
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
die benötigten Daten bei Programmstart in ein Array lesen und beim Beenden in eine Datei schreiben.

MfG
06/04/2013 13:38 .yorliK#1342
Ich möchte nichts an meinem Script ändern, sondern nur wissen wie man neue Einträge der gleichen Section in eine Datei schreibt ohne die alten Inhalte zu löschen/überschreiben.
06/04/2013 14:36 lolkop#1343
Quote:
Originally Posted by Kilroy. View Post
Ich möchte nichts an meinem Script ändern, sondern nur wissen wie man neue Einträge der gleichen Section in eine Datei schreibt ohne die alten Inhalte zu löschen/überschreiben.
es ist möglich endlos viele schlüssel in einer sektion zu speichern. wichtig ist nur das die schlüsselnamen sich alle unterscheiden.
06/04/2013 14:37 -Exzellent-#1344
Um wieviel würde das dann sein?
06/04/2013 17:44 .yorliK#1345
Quote:
Originally Posted by lolkop View Post
es ist möglich endlos viele schlüssel in einer sektion zu speichern. wichtig ist nur das die schlüsselnamen sich alle unterscheiden.
Das heißt also wenn in die Datei das geschrieben wurde:
[Section]
Lied0=[PFAD]
Lied1=[PFAD]
Lied2=[PFAD]

ist es möglich, durch evtl. einem neuen Button, das:
Lied3=[PFAD]
einzufügen?

Sodass am Ende das dort steht:
Lied0=[PFAD]
Lied1=[PFAD]
Lied2=[PFAD]
Lied3=[PFAD]

Wenn ja, wie? Mit diese Code grieg ich den Pfad zwar rein aber dort steht dann " =[PFAD]"
Code:
$Files = FileOpenDialog("Lied hinzufügen", @UserProfileDir & "\Music", "(*.mp3)", 1)
IniWrite(@ScriptDir & "\Playlist.kilroy", "Playlist", IniReadSection(@ScriptDir & "\Playlist.kilroy", "Playlist") & "Lied",  $Files)
06/04/2013 18:01 lolkop#1346
Quote:
Originally Posted by Kilroy. View Post
Das heißt also wenn in die Datei das geschrieben wurde:
[Section]
Lied0=[PFAD]
Lied1=[PFAD]
Lied2=[PFAD]

ist es möglich, durch evtl. einem neuen Button, das:
Lied3=[PFAD]
einzufügen?
am einfachsten geht das wohl per einfachem zähler... da du ja anscheinend unbedingt den komplizierten weg über inis gehen willst, musst du diesen zähler dann ebenfalls in der ini speichern.

Code:
[Section]
Counter=3
Lied0=...
Lied1=...
Lied2=...
beim hinzufügen zu einer playlist kannst du dann einfach Counter auslesen -> neuen pfad mit Lied<Counter> hinzufügen -> Counter inkrementieren und speichern

beim entfernen von liedern hast du dann natürlich wieder unzählige festplattenoperationen zu tätigen, weshalb das ganze system an sich, absolut unsinnig ist... da du ja aber auf dein kompliziertes, ineffizientes system bestehst, hast du wohl keine wahl...
06/04/2013 18:24 YatoDev#1347
Ich würde das auch nicht in einer .ini machen aber mal so nebenbei müsste der counter=3 nicht einfacherweise Counter=2 heisen ?

Ich würde das wie gesagt meiste zeit im programm speichern lassen und wenn nicht im programm dann in einen normale datei mit Funktionen aus der File.au3 geht das alles sehr gut ^^
Hab das jetzt letztens auch so gemacht anstatt .ini zu verwenden und muss sagen das mir das viel besser gefällt .

Man kann das dann auch übersichtlich lösen indem man sich ein paar kleine Funcs schreibt die man dafür immer wieder aufruft

-----------------------------------------------------------------------------
Keiner ne idee wie ich rar und zip dateien am besten entpacke die udf die ich ergoogelt habe sind crap ^^
06/04/2013 18:31 lolkop#1348
Quote:
Originally Posted by »FlutterShy™ View Post
Ich würde das auch nicht in einer .ini machen aber mal so nebenbei müsste der counter=3 nicht einfacherweise Counter=2 heisen ?
counter geben immer die anzahl der elemente an... 3 lieder -> counter = 3
welchen wert soll bei deiner logik der counter bei 0 liedern haben?

Quote:
Originally Posted by »FlutterShy™ View Post
Keiner ne idee wie ich rar und zip dateien am besten entpacke die udf die ich ergoogelt habe sind crap ^^
unrar bzw unzip nie nativ implementieren, da autoit was file operationen angeht leider sehr langsam ist... am einfachsten sollte das ganze über die 7zip exe und dll datei laufen. dies wäre dann mit einem einfachen run befehl abzuarbeiten...
06/04/2013 18:50 YatoDev#1349
0 = 1 lied und kein lied wäre -1 in meiner logik so schreibe ich meine scripts immer ist auch egal solange ich damit klar komme :D

Jo und woher bekomme ich die 7zip.exe und die dll ?

Wäre an beiden methoden interessiert ^^
06/04/2013 19:06 lolkop#1350
Quote:
Originally Posted by »FlutterShy™ View Post
Jo und woher bekomme ich die 7zip.exe und die dll ?

Wäre an beiden methoden interessiert ^^
[Only registered and activated users can see links. Click Here To Register...]