Das heisst ich muss auf diese "Unzuverlässigkeit" setzen, wenn ich dieses Feature noch mit drin haben will,
oder ich mache es total unsauber und packe den Downloader extern in einen zweiten Prozess und der primäre Prozess überprüft dann die Dateigröße und gibt demnach etwas zurück.
Das ist mir jedoch zu umständlich, ich bin ja nicht Chrome
Ich werde dann wohl die Datei parten müssen.
Dankeschön
Fliwatt
Beiträge von Fliwatt
-
-
Ich habe diese InetGetInfo Befehle extra eingefügt um in späteren Updates eine ProgressBar für den Download einzuführen zu können.
Ich habe mir gedacht, dass ich dieses Prinzip am Besten gleich sofort einführe, damit ich es ausführlich testen kann als dass ich dann in späteren Updates Probleme habe.
Aber anscheinend hat es so seine Macken, wie könnte ich das mit dem Download Progress denn umsetzen ohne den letzten Parameter auf 1 zu setzen? -
Hi Leute,
ich schreibe gerade ein Programm, welches Dateien von etwa 120MB aus einer Dropbox herunterlädt.
Jedoch stoße ich dabei mit InetGet häufig auf das Problem, dass der Download häufig unvollständig ist.
Beim Download der Datei mit einem "normalen" Browser (Firefox,Chrome etc.) habe ich keine Probleme.
Mit kleinen Dateien über InetGet gibt es auch keine Probleme.
Ich könnte natürlich auch den großen Download parten, das würde ich aber nur machen,wenn alle Stricke reißen.
Meine aktuelle Funktion zum Download in den Temp:Spoiler anzeigen
[autoit]
[/autoit]
Func _processDownload($sDownloadLink,$sTargettemp)
Global $sfullpathtemp = @TempDir & "\" & $sTargettemp
Local $sDownload = InetGet($sDownloadLink,$sfullpathtemp,1,1)
Do
sleep(200)
Until InetGetInfo($sDownload, 2)
If not FileExists($sfullpathtemp) Then
$sDownload = InetGet($sDownloadLink,$sfullpathtemp,1,1)
Do
sleep(200)
Until InetGetInfo($sDownload, 2)
If Not FileExists($sfullpathtemp) Then
MsgBox(48,"ERROR","Konnte Datei nicht vom Server herunterladen, Download abgebrochen")
GUISetState(@SW_HIDE)
GuiDelete($Form_main1)
maintool()
Elseif Not FileGetSize($sfullpathtemp) = InetGetSize($sDownloadLink) Then
MsgBox(48,"ERROR","Datei konnte nach zwei Versuchen nicht vollständig heruntergeladen werden, Download abgebrochen")
GUISetState(@SW_HIDE)
GuiDelete($Form_main1)
maintool()
EndIf
Elseif Not FileGetSize($sfullpathtemp) = InetGetSize($sDownloadLink) Then
$sDownload = InetGet($sDownloadLink,$sfullpathtemp,1,1)
Do
sleep(200)
Until InetGetInfo($sDownload, 2)
If Not FileExists($sfullpathtemp) Then
MsgBox(48,"ERROR","Konnte Datei nicht vom Server herunterladen, Download abgebrochen")
GUISetState(@SW_HIDE)
GuiDelete($Form_main1)
maintool()
Elseif Not FileGetSize($sfullpathtemp) = InetGetSize($sDownloadLink) Then
MsgBox(48,"ERROR","Datei konnte nach zwei Versuchen nicht vollständig heruntergeladen werden, Download abgebrochen")
GUISetState(@SW_HIDE)
GuiDelete($Form_main1)
maintool()
EndIf
EndIf
Return $sfullpathtemp
EndFunc
Das Seltsame dabei ist, dass er nicht erkennt, dass die Datei kaputt ist sondern es erst das Entpackprogramm bemerkt. (7z)
Wie kann ich die Funktion optimieren, damit solche Probleme nicht auftreten und wo liegt mein Fehler?
Hoffentlich könnt ihr mir helfen
Mfg Fliwatt -
Oder so zum Beispiel um immer den gleichen Wert in der Zwischenablage zu erlangen:
Spoiler anzeigen
[autoit]
[/autoit]
$Text = 'Beliebiger Text'
While 1
If Not ClipGet() = $Text Then ClipPut($Text)
sleep(200)
Wend -
Hab es noch mal hochgeladen
LINK
Window Info SummarySpoiler anzeigen
Code
Alles anzeigen>>>> Window <<<< Title: Willkommen Class: GLBSWizard Position: 710, 341 Size: 483, 360 Style: 0x94C80080 ExStyle: 0x00000101 Handle: 0x000000000002192C >>>> Control <<<< Class: Button Instance: 1 ClassnameNN: Button1 Name: Advanced (Class): [CLASS:Button; INSTANCE:1] ID: 3 Text: &Weiter> Position: 301, 301 Size: 73, 23 ControlClick Coords: 37, 12 Style: 0x50010001 ExStyle: 0x00000004 Handle: 0x000000000002193C >>>> Mouse <<<< Position: 1051, 679 Cursor ID: 0 Color: 0xF0F0F0 >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< &Weiter> Abbrechen Willkommen im Installationsprogramm für Siege of Avalon Chapter 1+. Dieses Programm installiert Siege of Avalon Chapter 1+ auf Ihrem Computer. Wir empfehlen nachdrücklich, vor Ausführen dieses Installationsprogramms alle Windows-Programme zu beenden. Auf Abbrechen klicken, um die Installation zu beenden und alle laufenden Programme zu schließen. Auf Weiter klicken, um mit dem Installationsprogramm zu beginnen. WARNUNG: Dieses Programm ist urheberrechtlich sowie durch internationale Verträge geschützt. Die unzulässige Vervielfältigung oder Verbreitung dieses Programms, ob ganz oder auszugsweise, kann schwere zivil- und strafrechtliche Konsequenzen nach sich ziehen und wird unter voller Ausschöpfung der Rechtsmittel geahndet. >>>> Hidden Text <<<<
Der Text ist nicht mehr aktuell, das erste Kapitel wurde kostenlos zur Vervielfältigung freigegeben
Fliwatt -
Ich will ein Setup von einem Spiel namens Siege of Avalon, erstes Kapitel "manipulieren".
Die Sachen, die ich manipulieren will, sind ganz normale Buttons in einem Fenster und er sollte noch etwas in ein Edit Feld schreiben. Die AutoIT3 Summary kommt bald, ich bin gerade noch an einem anderen Rechner -
Und wieso geht dann dieser Script nicht, wenn das Datum und Uhrzeit Fenster nicht(!) ausgewählt ist, aber offen?
[autoit]
[/autoit]
sleep(1000)
ControlClick("Datum und Uhrzeit","","[CLASS:Button; INSTANCE:1]")
sleep(1000)
Exit -
Das Problem ist, dass ControlClick keine Bedienung im Hintergrund erlaubt
-
-
Dankeschön, aber der Mod ist nicht von mir,
ich habe mal BlockInput gegoogelt und damit geht es ganz einfach, aber eleganter wäre es, wenn der User seinen PC in den 3 Minuten auch weiter benutzen könnte.
Fliwatt -
Hi Leute,
ich arbeite gerade an einem Mod Tool für ein etwas älteres Spiel (Siege of Avalon) und bin dabei auf ein Problem gestoßen:
Ich will dem Nutzer die Möglichkeit geben, die Mods zu installieren, selbst wenn er nicht Siege of Avalon besitzt.
Das erste Kapitel von Siege of Avalon gibt es legal kostenlos zum Download und dieses wird auch für die Mods benötigt.
Ich will jedem Nutzer die Möglichkeit bieten, diese Mods zu spielen, deshalb habe ich die Möglichkeit der Installation von Siege of Avalon in meinen Mod-Tool Installer integriert.
Das Problem ist, dass die einzelnen Spieldateien nur von dem Installer installiert werden dürfen. Wenn man die Dateien anderweitig weitergibt verstößt dies gegen die Lizenzbedingungen.
Also habe ich ein kleines Programm programmiert, welches im Installer die entsprechenden Boxen anklickt.
Jedoch darf man, während das Programm klickt, den PC nicht bedienen, das ist ein Handicap.
Wie kann ich es hinbekommen, dass das Programm im Hintergrund die entsprechenden Dinger anklickt?
Ich habe unter anderem ein kleines Edit-Feld, in welches eine Variable eingetragen wird (Installations-Path), das sollte möglichst auch im Hintergrund laufen.
Vieleicht wisst ihr eine Lösung
Mfg Fliwatt -
Ich empfehle dir als GUI Style $WS_POPUP zu nehmen,
[autoit]
eine Vollbild GUI ohne Taskleiste würde dann so aussehen:
[/autoit]
GUICreate("",@DesktopWidth,@DesktopHeight,0,0,$WS_POPUP)
Fliwatt -
Danke für die Antwort, diese Variante geht gut, aber ich habe es jetzt auch schon mit Windows Media Player programmiert,
Problem gelöst
Fliwatt -
In Ordnung, aber wie wandele ich die .avi Datei in eine lauffähige Datei um?
Ich habe es jetzt mit diesem Script probiert:Spoiler anzeigen
[autoit][/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]Example()
[/autoit] [autoit][/autoit] [autoit]Func Example()
[/autoit] [autoit][/autoit] [autoit]
Local $ani1, $buttonstart, $buttonstop, $msgGUICreate("Meine GUI-Animation", 360, 200)
[/autoit] [autoit][/autoit] [autoit]
$ani1 = GUICtrlCreateAvi(FileOpenDialog("","","Video Files(*.avi)"), 0, 50, 10)$buttonstart = GUICtrlCreateButton("Start", 95, 150, 70, 22)
[/autoit] [autoit][/autoit] [autoit]
$buttonstop = GUICtrlCreateButton("Stopp", 195, 150, 70, 22)GUISetState()
[/autoit] [autoit][/autoit] [autoit]; Die Schleife wiederholt sich, bis der Benutzer eine Beenden-Aktion auslöst
[/autoit] [autoit][/autoit] [autoit]
While 1
$msg = GUIGetMsg()Select
[/autoit] [autoit][/autoit] [autoit]
Case $msg = $GUI_EVENT_CLOSE
ExitLoopCase $msg = $buttonstart
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($ani1, 1)Case $msg = $buttonstop
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($ani1, 0)EndSelect
[/autoit]
WEnd
EndFunc
Und in das jeweils .avi Dateien von dem Codec MJEPG, XVID, und DIVX, es kommt immer die Fehlermeldung:CodeD:\XXXXXX\XXXXXX\XXXXXXXX.AVI ist entweder nicht für die Ausführung unter Windows vorgesehen oder enthält einen Fehler. Installieren sie das Progreamm mit den Originalinstallationsmedien erneut, oder wenden Sie sich an den Systemadministrator oder Softwarelieferanten, um Unterstützung zu erhalten
Welchen Codec benötigt man denn, damit es in GuiCtrlCreateAvi funktioniert?
Fliwatt -
Dankeschön für den Link, aber ich habe mir selbstverständlich schon die Dokumentation durchgelesen, ich habe nur hier im Script-Post das Include vergessen,
aber in meinem Script ist es:
So geht es immer noch nicht:Spoiler anzeigen
[autoit]
[/autoit]
#include <AVIConstants.au3>
$GUI = GUICreate("",@DesktopWidth,@DesktopHeight,0,0,$WS_POPUP)
$avi = GUICtrlCreateAvi(FileOpenDialog("","","Video Files(*.avi)"),0,0,0,@DesktopWidth,@DesktopHeight,$ACS_TRANSPARENT,$ACS_AUTOPLAY)
GUISetState(@SW_SHOW)
while 1
wend
Ich benutze Windows 7 64-bit, der .avi Codec ist XviD ISO MPEG-4, ich weiss nicht, was du mit Ur-Avi meinst, das Programm spielt einfach nur eine 52 sek Avi, die Auflösung der Datei ist übrigens, genau wie meine Bildschirmauflösung: 1920x1080
Fliwatt -
Mein Funktionsaufruf sieht zum Beispiel folgendermaßen aus(es gibt in diesem Script mehrere):
Spoiler anzeigen
Global $MainSoAPath = IniRead("ModToolConfig.ini","main","MainSoAPath","error")
Global $BackupPath = IniRead("ModToolConfig.ini","main","BackupPath",@ScriptDir & "\BackupFiles")
_DirCopyBackupNoSaves($BackupPath & "\poa",$MainSoAPath,$BackupPath & "\soa")
Fliwatt -
Hi Leute,
ich habe ein kleines Problem mit GuiCtrlCreateAvi, es spielt das Video einfach nicht ab, obwohl ich als Parameter $ACS_AUTOPLAY gesetzt habe, benötige ich zum abspielen irgendeinen Codec?
Wenn ja, wie kann ich diesen per Script installieren?
Die verwendete Datei war selbstverständlich eine .avi Datei
Vieleicht findet ihr den Fehler.
Script:Spoiler anzeigen
[autoit]
[/autoit]
$GUI = GUICreate("",@DesktopWidth,@DesktopHeight,0,0,$WS_POPUP)
$avi = GUICtrlCreateAvi(FileOpenDialog("","","Video Files(*.avi)"),0,0,0,@DesktopWidth,@DesktopHeight,$ACS_TRANSPARENT,$ACS_AUTOPLAY)
GUISetState(@SW_SHOW)
while 1
wend
Fliwatt -
Hi Leute,
ich erwecke diesen Thread einmal wieder von den toten, weil ich wieder ein ähnliches Problem habe
Das Script lässt schon wieder Dateien aus, ich habe einfach nur ein "games" beim weglassen eingefügt, aber jetzt kopiert das Programm nur die Dateien, erstellt jedoch kein entsprechendes Backup der Dateien.
Vieleicht könnt ihr mir noch einmal helfen.
Script:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#region Rekursive Ordnerauflistung Funktion
#include <Array.au3>
#include <File.au3>
#include <Crypt.au3>;*******************************************************************************************************************************************************************************************************************************************
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; Funktion _ordner_rekursiv($udf_quellordner[, $udf_Ordner_Dateien[, $udf_unterordner=True[, $udf_spalte_datum=False[, $udf_dateityp = "*"[, $udf_auslassen = ""]]]]])
; Beschreibung ermittelt alle Dateien/Ordner des angegebenen Verzeichnisses
; Parameter $udf_quellordner: der zu durchsuchende Ordner (Angabe: einzelner Ordner als String oder mehrere Ordner im Array beginnend bei 1)
; optional $udf_Ordner_Dateien: 1 = Dateien auflisten (Standard) 2 = Ordner auflisten
; optional $udf_unterordner: True = Unterordner miteinbeziehen (Standard) False = Unterordner nicht miteinbeziehen
; optional $udf_spalte_datum: True = Änderungsdatum der Datei ermitteln False = Änderungsdatum der Datei nicht ermitteln (Standard)
; optional $udf_dateityp: einzuschließende Dateitypen (mehrere Typen durch | trennen) "*" >>> alle (Standard)
; optional $udf_auslassen: Wörter, die im Pfad oder Dateinamen vorkommen, auslassen (mehrere durch | trennen) "" <<< Standard
; Rückgabewert Erfolg: Gibt ein Array mit 3 Spalten zurück (Dateiname, Dateipfad, Änderungsdatum)
; Fehler: 0 setzt @error
; @error = 1 mindestens 1 Pfad existiert nicht
; Autor Tweaky (http://www.autoit.de)
;*******************************************************************************************************************************************************************************************************************************************;********************************************
[/autoit] [autoit][/autoit] [autoit]
; Ordner rekursiv (Hauptfunktion) *
;********************************************Func _ordner_rekursiv($udf_quellordner, $udf_Ordner_Dateien = 1, $udf_unterordner = True, $udf_spalte_datum = False, $udf_dateityp = "*", $udf_auslassen = "")
[/autoit] [autoit][/autoit] [autoit]
Local $verzeichnisse_alle[1] ;Array für die Ordner
Local $array_alles[1000000][3] ;Array für die Ordner und Dateien
Local $szDrive, $szDir, $szFName, $szExtIf Not IsArray($udf_quellordner) Then ;Falls der Quellordner kein Array ist, ein Array erstellen
[/autoit] [autoit][/autoit] [autoit]
$udf_quellordner_tmp = $udf_quellordner
Dim $udf_quellordner[2]
$udf_quellordner[0] = 1
$udf_quellordner[1] = $udf_quellordner_tmp
EndIfFor $i = 1 To UBound($udf_quellordner) - 1
[/autoit] [autoit][/autoit] [autoit]
If Not FileExists($udf_quellordner[$i]) Or Not StringInStr($udf_quellordner[$i], ":") Then
SetError(1) ;mindestens 1 Pfad existiert nicht
Return 0
EndIfIf StringRight($udf_quellordner[$i], 1) <> "\" Then $udf_quellordner[$i] &= "\"
[/autoit] [autoit][/autoit] [autoit]$udf_quellordner_einzeln = $udf_quellordner[$i]
[/autoit] [autoit][/autoit] [autoit]If $udf_unterordner = True Then ;mit Unterordner
[/autoit] [autoit][/autoit] [autoit]
_ordner_rekursiv_mit_unterordner($udf_quellordner_einzeln, $verzeichnisse_alle)
_ArrayAdd($verzeichnisse_alle, $udf_quellordner_einzeln)
Else ;ohne Unterordner
$verzeichnisse_alle = $udf_quellordner
EndIf
NextIf IsArray($verzeichnisse_alle) Then $verzeichnisse_alle[0] = UBound($verzeichnisse_alle) - 1 ;In die erste Zeile die Anzahl der Dateien schreiben
[/autoit] [autoit][/autoit] [autoit]$zaehler_fortlaufend = 0
[/autoit] [autoit][/autoit] [autoit]If $udf_Ordner_Dateien = 1 Then ;Dateien auflisten
[/autoit] [autoit][/autoit] [autoit]If Not IsArray($verzeichnisse_alle) Then
[/autoit] [autoit][/autoit] [autoit]
$verzeichnisse_alle_tmp = $verzeichnisse_alle
Local $verzeichnisse_alle[2] ;Array für die Ordner
$verzeichnisse_alle[1] = $verzeichnisse_alle_tmp
EndIfFor $u = 1 To UBound($verzeichnisse_alle) - 1
[/autoit] [autoit][/autoit] [autoit]
$array_alle_dateien = _FileListToArray($verzeichnisse_alle[$u], "*", 1)For $k = 1 To UBound($array_alle_dateien) - 1
[/autoit] [autoit][/autoit] [autoit]
$kriterien_ok = 0If $udf_dateityp = "*" Then ;Dateityp nicht angegeben oder alle Dateien
[/autoit] [autoit][/autoit] [autoit]
$kriterien_ok = 1
Else ;1 oder mehrere Dateitypen angegeben
$dateityp_split = StringSplit($udf_dateityp, "|")
$udf_dateiendung_array = _PathSplit($array_alle_dateien[$k], $szDrive, $szDir, $szFName, $szExt)
$udf_dateiendung = $udf_dateiendung_array[4]
For $i = 1 To UBound($dateityp_split) - 1
If "." & $dateityp_split[$i] = StringRight($array_alle_dateien[$k], StringLen($udf_dateiendung)) Then
$kriterien_ok = 1
ExitLoop
EndIf
Next
EndIfIf $udf_auslassen <> "" Then ;Wörter in dem Pfad und Datei auslassen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$auslassen_split = StringSplit($udf_auslassen, "|")
For $i = 1 To UBound($auslassen_split) - 1
If StringInStr($array_alle_dateien[$k], $auslassen_split[$i]) Or StringInStr($verzeichnisse_alle[$u], $auslassen_split[$i]) Then
$kriterien_ok = 0
ExitLoop
EndIf
Next
EndIf;Papierkorb und System Volume Information wird nicht aufgelistet
[/autoit] [autoit][/autoit] [autoit]
If StringInStr($array_alle_dateien[$k], 'RECYCLER') Or StringInStr($verzeichnisse_alle[$u], 'RECYCLER') _
Or StringInStr($array_alle_dateien[$k], 'RECYCLED') Or StringInStr($verzeichnisse_alle[$u], 'RECYCLED') _
Or StringInStr($array_alle_dateien[$k], 'System Volume Information') Or StringInStr($verzeichnisse_alle[$u], 'System Volume Information') _
Or StringInStr($array_alle_dateien[$k], '$RECYCLE.BIN') Or StringInStr($verzeichnisse_alle[$u], '$RECYCLE.BIN') Then
$kriterien_ok = 0
ExitLoop
EndIf;wenn der Dateityp passt und die Datei bzw. der Ordner nicht ausgelassen werden soll
[/autoit] [autoit][/autoit] [autoit]
If $kriterien_ok = 1 Then
$zaehler_fortlaufend += 1
$array_alles[$zaehler_fortlaufend][0] = $verzeichnisse_alle[$u]
$array_alles[$zaehler_fortlaufend][1] = $array_alle_dateien[$k]
If $udf_spalte_datum = True Then $array_alles[$zaehler_fortlaufend][2] = FileGetTime($verzeichnisse_alle[$u] & $array_alle_dateien[$k], 0, 1)
EndIf
Next
NextElse ;Ordner auflisten
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To UBound($verzeichnisse_alle) - 1
$kriterien_ok = 1;Papierkorb und System Volume Information wird nicht aufgelistet
[/autoit] [autoit][/autoit] [autoit]
If StringInStr($verzeichnisse_alle[$i], 'RECYCLER') Or StringInStr($verzeichnisse_alle[$i], 'RECYCLED') _
Or StringInStr($verzeichnisse_alle[$i], 'System Volume Information') Or StringInStr($verzeichnisse_alle[$i], '$RECYCLE.BIN') Then
$kriterien_ok = 0
ExitLoop
EndIfIf $kriterien_ok = 1 Then
[/autoit] [autoit][/autoit] [autoit]
$zaehler_fortlaufend += 1
$array_alles[$zaehler_fortlaufend][0] = $verzeichnisse_alle[$i]
EndIf
Next
EndIf;Leere Zeilen am Ende löschen
[/autoit] [autoit][/autoit] [autoit]
ReDim $array_alles[$zaehler_fortlaufend + 1][3];In die erste Zeile die Anzahl der Dateien schreiben
[/autoit] [autoit][/autoit] [autoit]
If IsArray($array_alles) Then $array_alles[0][0] = UBound($array_alles) - 1$verzeichnisse_alle = 0 ;Array löschen
[/autoit] [autoit][/autoit] [autoit]Return $array_alles ;Array zurückgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_ordner_rekursiv;**************************************
[/autoit] [autoit][/autoit] [autoit]
; Unterordner durchsuchen *
;**************************************Func _ordner_rekursiv_mit_unterordner($udf_quellordner, ByRef $verzeichnisse_alle)
[/autoit] [autoit][/autoit] [autoit]
$verzeichnisse = _FileListToArray($udf_quellordner, "*", 2)For $i = 1 To UBound($verzeichnisse) - 1
[/autoit]
$verzeichnisse[$i] = $udf_quellordner & $verzeichnisse[$i] & "\"
_ArrayAdd($verzeichnisse_alle, $verzeichnisse[$i])
_ordner_rekursiv_mit_unterordner($verzeichnisse[$i], $verzeichnisse_alle)
Next
EndFunc ;==>_ordner_rekursiv_mit_unterordner
#endregion Rekursive Ordnerauflistung Funktion
Func _DirCopyBackupNoSaves($sSource,$sTarget,$sBackupFolder)
Local $iCounterDirCopyBackup = 1
Local $iCounterDirCopyBackup2 = 1
Local $fFound = 0
Local $aSourceRekursiv = _ordner_rekursiv($sSource,1,True,False,"*","games")
Local $aTargetRekursiv = _ordner_rekursiv($sTarget,1,True,False,"*","games")
For $iCounterDirCopyBackup = 1 To UBound($aSourceRekursiv) - 1
For $iCounterDirCopyBackup2 = 1 To UBound($aTargetRekursiv) - 1
If StringTrimLeft($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1], StringLen($sSource)) = StringTrimLeft($aTargetRekursiv[$iCounterDirCopyBackup2][0] & $aTargetRekursiv[$iCounterDirCopyBackup2][1], StringLen($sTarget)) Then
If _Crypt_HashFile($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1], $CALG_MD5) <> _Crypt_HashFile($aTargetRekursiv[$iCounterDirCopyBackup2][0] & $aTargetRekursiv[$iCounterDirCopyBackup2][1], $CALG_MD5) Then
FileCopy($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1], $sBackupFolder & StringTrimLeft($aTargetRekursiv[$iCounterDirCopyBackup2][0] & $aTargetRekursiv[$iCounterDirCopyBackup2][1], StringLen($sTarget)), 9)
FileCopy($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1], $aTargetRekursiv[$iCounterDirCopyBackup2][0] & $aTargetRekursiv[$iCounterDirCopyBackup2][1], 1)
$fFound = 1
Else
$fFound = 1
EndIf
EndIf
Next
If $fFound = 0 Then
FileCopy($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1], $sTarget & StringTrimLeft($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1], StringLen($sSource)), 9)
Else
Local $fFound = 0
EndIf
Next
Return $aSourceRekursiv[0][0]
_Crypt_Shutdown()
EndFunc
Fliwatt -
Danke minx,
[autoit]
ich benutze jetzt die NON-GDI Variante von dem Script, jedoch habe ich es noch nicht so recht verstanden:
Wie füge ich jetzt meinen Graphen ein und wie bekomme ich es hin, dass an den Achsen Markierungen sind, muss ich das von Hand mit Labels machen?
Code bis jetzt:
[/autoit]
#include <GUIConstants.au3>
#include "Graph UDF.au3"
#Include <File.au3>
FileWrite("a.txt",Random(1,30,1) & @CRLF & Random(1,30,1) & @CRLF & Random(1,30,1)) ; Nur fürs Testen des Scripts
Local $array[_FileCountLines("a.txt")]
_FileReadToArray("a.txt",$array)
$Gui = GUICreate("Graf der Parabel",600,600)
GUISetState(@SW_SHOW)
$Graph = _Graph_Create(0,0,590,590)
While 1
If GUIGetMsg($Gui) = $GUI_EVENT_CLOSE Then Exit
sleep(100)
WEnd
Fliwatt -
Ich habe mir mal die Variante aus dem Thread von progandy herausgesucht, jedoch verstehe ich noch nicht, wie ich dort meine Werte einfüge,
immer wenn ich etwas in der Dim verändere, kommen skurrile Werte heraus.
Wie muss ich die Variable anpassen und was bedeuten die beiden Werte?
Benutzung für das Programm:
Ich habe verschiedene Nutzungszeiten eines Computers pro Session und will diese grafisch darstellen.
Fliwatt