|
You last visited: Today at 07:31
Advertisement
Tratsch rund um Autoit / Autoit Talk | kleinere Fragen
Discussion on Tratsch rund um Autoit / Autoit Talk | kleinere Fragen within the AutoIt forum part of the Coders Den category.
06/03/2013, 17:40
|
#1336
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
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
|
#1337
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Kilroy.
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
Code:
$Files = FileOpenDialog("Wähle die Lieder aus!", "", "MP3 (*.mp3)", 1 + 4, ".mp3")
If @error Then
MsgBox(64, "Information", "Abgebrochen!")
Return 0
EndIf
While True
$rtn = 0
$fSplit = StringSplit($Files, "|", 2)
If UBound($fSplit) - 1 < 2 Then
MsgBox(64, "Information", "Eine Playlist hat mindestens 2 Lieder!")
Return 0
EndIf
If FileExists(@ScriptDir & "\Playlist.kilroy") Then
$Sections = IniReadSectionNames(@ScriptDir & "\Playlist.kilroy")
EndIf
If $rtn <> 1 Then
ExitLoop
EndIf
WEnd
FileDelete(@ScriptDir & "\Playlist.kilroy")
For $i = 1 To UBound($fSplit) - 1
IniWrite(@ScriptDir & "\Playlist.kilroy", "Playlist", "Lied" & $i - 1, $fSplit[0] & "\" & $fSplit[$i])
Next
MsgBox(64, "Information", "Neue Playlist wurde erfolgreich erstellt.")
und hier der code der das neue Lied hinzufügen soll ähnelt dem anderen:
Code:
$Files = FileOpenDialog("Song hinzufügen", @UserProfileDir & "\Music", "(*.mp3)", 2)
If @error Then
MsgBox(64, "Information", "Abgebrochen!")
Return 0
EndIf
While True
$rtn = 0
$fSplit = StringSplit($Files, "|", 2)
If FileExists(@ScriptDir & "\Playlist.kilroy") Then
$Sections = IniReadSectionNames(@ScriptDir & "\Playlist.kilroy")
EndIf
If $rtn <> 1 Then
ExitLoop
EndIf
WEnd
For $i = 1 To UBound($fSplit) - 1
IniWrite(@ScriptDir & "\Playlist.kilroy", "Playlist", IniReadSection(@ScriptDir & "\Playlist.kilroy", "Playlist") & "Lied" & $i - 1, $fSplit[0] & "\" & $fSplit[$i]);==> Er ließt die vorhandene aus und sollte dann das neue mit der vorhandenen reinschreiben...
Next
MsgBox(64, "Information", "Lied hinzugefügt.")
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
|
#1338
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Hat jemand eine gute und simple UDF um .rar /.zip und sowas zu entpacken ?
|
|
|
06/03/2013, 18:50
|
#1339
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
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:
Code:
$Files = FileOpenDialog("Wähle die Lieder aus!", "", "MP3 (*.mp3)", 1 + 4, ".mp3")
If @error Then
MsgBox(64, "Information", "Abgebrochen!")
Return 0
EndIf
While True
$rtn = 0
$fSplit = StringSplit($Files, "|", 2)
If UBound($fSplit) - 1 < 2 Then
MsgBox(64, "Information", "Eine Playlist hat mindestens 2 Lieder!")
Return 0
EndIf
If FileExists(@ScriptDir & "\Playlist.kilroy") Then
$Sections = IniReadSectionNames(@ScriptDir & "\Playlist.kilroy")
EndIf
If $rtn <> 1 Then
ExitLoop
EndIf
WEnd
FileDelete(@ScriptDir & "\Playlist.kilroy")
For $i = 1 To UBound($fSplit) - 1
IniWrite(@ScriptDir & "\Playlist.kilroy", "Playlist", "Lied" & $i - 1, $fSplit[0] & "\" & $fSplit[$i])
Next
MsgBox(64, "Information", "Neue Playlist wurde erfolgreich erstellt.")
EndIf
EndFunc
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
|
#1340
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Kilroy.
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
|
#1341
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
@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,

die benötigten Daten bei Programmstart in ein Array lesen und beim Beenden in eine Datei schreiben.
MfG
|
|
|
06/04/2013, 13:38
|
#1342
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
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
|
#1343
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Kilroy.
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
|
#1344
|
elite*gold: 0
Join Date: Jan 2013
Posts: 242
Received Thanks: 20
|
Um wieviel würde das dann sein?
|
|
|
06/04/2013, 17:44
|
#1345
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
Quote:
Originally Posted by lolkop
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
|
#1346
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Kilroy.
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
|
#1347
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
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 **** ^^
|
|
|
06/04/2013, 18:31
|
#1348
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by »FlutterShy™
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™
Keiner ne idee wie ich rar und zip dateien am besten entpacke die udf die ich ergoogelt habe sind **** ^^
|
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
|
#1349
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
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
Jo und woher bekomme ich die 7zip.exe und die dll ?
Wäre an beiden methoden interessiert ^^
|
|
|
06/04/2013, 19:06
|
#1350
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by »FlutterShy™
Jo und woher bekomme ich die 7zip.exe und die dll ?
Wäre an beiden methoden interessiert ^^
|
|
|
|
Similar Threads
|
[Sammelthread]Fragen zu Autoit wie man Hacks herstellt(Autoit) + Antworten
11/16/2011 - Metin2 - 0 Replies
Hallo Liebe Community,
Ich habe diesen Thread aufgemacht weil manche leute mit Autoit nicht mehr weiterkommen wie man Hack herstellt ,ich habe mit schon ein Multihack mit Autoit herstellt das war einfach .Da viele User nicht weiterkommen werden habe ich mich entschieden ein Thread aufzumachen mit Fragen und ich den dann Antworten kann und helfen kann!
------------------------------------------------- ---------------------------
Mein Multihack:...
|
All times are GMT +1. The time now is 07:33.
|
|