1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Andy

Beiträge von Andy

  • String nach zeichen durchsuchen

    • Andy
    • 8. Februar 2010 um 15:12

    OB in einem String ein ! vorkommt kannst du so prüfen:

    [autoit]

    $string="Hallo, das ist ein Test!"
    stringreplace($string,"!","!")
    if @extended then msgbox(0,0,"Das ! ist im string enthalten")

    [/autoit]

    Die Position des ! im String findest du per

    [autoit]

    $string="Hallo, das ist ein Test!"
    $position=stringinstr($string,"!")
    if $position then msgbox(0,0,"Das ! ist im string enthalten an Position "&$position)

    [/autoit]
  • Txt / Excel Spalten in Zeilen konvertieren

    • Andy
    • 8. Februar 2010 um 14:28

    Hallo Oscar,
    habe zwar kein Excel, aber eine Frage zu deinem Script. Gibt es einen speziellen Grund (ggf. Importformat für csv?) warum du bei

    [autoit]

    $sData &= $aData[$row + $i][1] & ', '

    [/autoit]

    hinter dem Komma ein Leerzeichen einfügst?

  • 3d Elemente erzeugen (wie im EgoShoter)

    • Andy
    • 7. Februar 2010 um 14:44
    Zitat

    Eins muss ich festestellen: Warum hälts du mich für ein Noob(sry, musste sein)?

    Weil du dich genau so artikulierst!
    Nur ansatzweises Suchen mit den passenden Begriffen hätte dich in wenigen Sekunden
    http://www.autoitscript.com/forum/index.php?showtopic=70506
    oder
    http://www.autoitscript.com/forum/index.php?showtopic=107373
    oder
    http://www.autoitscript.com/forum/index.php?showtopic=53575
    und noch viel mehr zu diesem Thema finden lassen. Alles m.E. relativ einfache Möglichkeiten für die Erstellung bzw Bearbeitung von 3D-Grafiken.
    Ob man sich komplexe 3D-Spiele mit AutoIt antun muss, ist die Frage, vor allem, da es reichlich 3D-Software zur Spielerstellung auf dem Markt gibt!

  • Dateiname auf Groß- und Kleinschreibung prüfen

    • Andy
    • 7. Februar 2010 um 14:21

    ggf schneller....

    [autoit]


    $path='"'&@Scriptdir&"\TEST.AU3"&'"' ;Pfad in Anführungsstriche wg evtl. Leerzeichen, Dateiname nicht casesensitiv

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $pid = Run('cmd.exe /C dir /b '&$path, "", @SW_HIDE, 6)
    $buffer=""
    While 1
    $buffer &= StdoutRead($pid)
    If @error Then ExitLoop
    ;FileWrite($file, $buffer)
    Wend
    While 1
    $buffer &= StderrRead($pid)
    If @error Then ExitLoop
    WEnd
    MsgBox(0, "STDOUT gelesen:", $buffer) ;gibt exakten dateinamen casesensitiv

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Dateiname auf Groß- und Kleinschreibung prüfen

    • Andy
    • 7. Februar 2010 um 13:27

    vielleicht hilft dir

    [autoit]

    _PathSplit ($szPath, ByRef $szDrive, ByRef $szDir, ByRef $szFName, ByRef $szExt)

    [/autoit]

    weiter

  • Dateiname auf Groß- und Kleinschreibung prüfen

    • Andy
    • 7. Februar 2010 um 13:10
    [autoit]

    $a="TeSt"
    $b="test"
    $c="TeSt"

    [/autoit][autoit][/autoit][autoit]

    if $a=$b then msgbox(0,0,$a&"="&$b)
    if $a==$b then msgbox(0,0,$a&"=="&$b)
    if $a==$c then msgbox(0,0,$a&"=="&$c)

    [/autoit]

    uups, viel zu langsam^^

    Zitat

    Wie bekomme ich den genauen Wortlaut des Dateinamens heraus?

    ähhm, um dich mal zu zitieren:

    Zitat

    also entweder ich steht dermassen auf dem Schlauch

    WAS bitte willst du denn vergleichen?!
    Wenn du einen Dateinamen hast, dann kannst du diesen auch vergleichen, wenn du keinen hast, womit willst du dann vergleichen?

    Zitat

    Oder muß ich mit _Filelistetoarray alle Dateien einlesen und dann zeilenweise vergleichen?

    wie sonst?

  • Gibt es InetGetDate oder vergleichbares?

    • Andy
    • 6. Februar 2010 um 03:17

    ftp_ex.au3 von prog@ndy, da ist alles benötigte drin

    [autoit]


    $FileInfo = _FtpFileFindFirst($ftpConnect, "test.exe", $handle, $DllRect) ;datei auf dem server

    [/autoit][autoit][/autoit][autoit]

    $date_serverfile = filedatenumber(_FTPFileTimeLoHiToStr($FileInfo[6], $FileInfo[7])) ;datum serverfile

    [/autoit][autoit][/autoit][autoit]

    Func filedatenumber($time) ;wandelt 23.04.2007 23:12:55 in 20070423231256 als zahl (kein string!)
    $numbertime = Number(StringMid($time, 7, 4) & StringMid($time, 1, 2) & StringMid($time, 4, 2) & StringMid($time, 12, 2) & StringMid($time, 15, 2) & StringMid($time, 18, 2))
    Return $numbertime
    EndFunc ;==>filedatenumber

    [/autoit][autoit][/autoit][autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPFileTimeLoHiToStr()
    ; Description: Get FileTime String
    ; Parameter(s):
    ; Requirement(s): DllCall, date.au3
    ; Return Value(s): On Success - Date
    ; On Failure - "" (empty String)
    ; Author(s): Prog@ndy
    ;
    ;===============================================================================
    Func _FTPFileTimeLoHiToStr($LoDWORD, $HiDWORD)
    Local $FileTime = DllStructCreate("dword;dword")
    If Not $LoDWORD And Not $HiDWORD Then Return SetError(1, 0, "")
    DllStructSetData($FileTime, 1, $LoDWORD)
    DllStructSetData($FileTime, 2, $HiDWORD)
    Local $date = _Date_Time_FileTimeToStr($FileTime)
    Return SetError(@error, @extended, $date)
    EndFunc ;==>_FTPFileTimeLoHiToStr

    [/autoit]
  • Suche Indikator für abgeschlossene Windows XP Benutzeranmeldung / Desktop fertig initialisiert (Startleiste + Desktopicons sichbar)

    • Andy
    • 5. Februar 2010 um 23:24

    das Problem hatte ich auch schon, generell kannst du Windows nur schwer vorschreiben, WANN es irgendwelche Programme/Treiber/Wasauchimmer beim Start zu laden hat. Ich habe das Problem mit einer ISDN-Telefonsoftware, da kann es sein, daß das Faxmodul noch am laden ist, aber das Anrufbeantwortermodul schon gestartet wurde. Da beide Module vom Telefonmodul (Serverprozess) abhängig sind, warten die dann ab und zu aufeinander. Die entsprechende Meldung im Fenster (Modul kann nicht gestartet werde, warten auf Server: Wiederholen) habe ich mittlerweile per Script (auf automatisch "Wiederholen"klicken) in diesem Fall hinbekommen.

    Allerdings ist irgendein Programm immer "das letzte" in der Reihe, daß geladen wird. Das Erscheinen des Desktops hat nicht unbedingt zu heißen, daß die Laderei der gesamten Software schon abgeschlossen ist! Daher würde ich mir ein Programm, welches zuletzt geladen wird, als Referenz für den (weitgehend) abgeschlossenen Start auswählen und dieses per Processexist() abfragen. Wenn dieses Prog existiert, dann ist Windows gestartet....

  • StringReplace mit Binär

    • Andy
    • 5. Februar 2010 um 20:37
    [autoit]

    $test=fileopen("test.txt",17)
    FileWrite($test,$textuisystem_contents)
    fileclose($test)

    [/autoit]

    da Format in UTF16 ist das CRLF schon integriert....

  • StringReplace mit Binär

    • Andy
    • 5. Februar 2010 um 19:29

    Hallo,
    im Prinzip liest du UTF16 aus deiner Datei, also musst du auch in diesem Format schreiben

    [autoit]

    $textuisystem_handle = FileOpen("textuisystem2.txt", 32 )
    $textuisystem_contents = FileRead($textuisystem_handle)

    [/autoit][autoit][/autoit][autoit]

    $textuisystem_contents = StringReplace($textuisystem_contents, "31095549435F5354545F464F4E544E414D45093F3F3F","32095549435F5354545F464F4E544E414D45093F3F3F")

    [/autoit][autoit][/autoit][autoit]

    $test=fileopen("test.txt",32)
    FileWrite($test,$textuisystem_contents&@crlf)

    [/autoit]


    /EDIT/ copy/paste fehler

  • Fenster 800x600 in fullscreen Fenster

    • Andy
    • 4. Februar 2010 um 19:13

    da nur ca 1 Promille aller Fragen wirklich "neu" sind, findet man so gut wie zu allen Themen schon fertige Scripte, Google hilft...

  • Fenster 800x600 in fullscreen Fenster

    • Andy
    • 4. Februar 2010 um 14:06

    dann schreib dir doch ein Script, welches beim Starten dieses Programms die Auflösung auf 800x600 Punkte setzt. Dann skaliert dein Monitor das Bild auf Fullscreen hoch.
    Btw, um welches Programm gehts?

  • Fenster 800x600 in fullscreen Fenster

    • Andy
    • 4. Februar 2010 um 11:12

    Hallo,
    es kommt auf die Anwendung an. Wenn du es schaffst, den Fensterinhalt des 800x600-Fensters per PrintWindow()-Funktion aus der User32.dll in einen Device-Context zu schreiben, dann kannst du diesen wiederum in dein Fullscreenfenster blitten.
    Allerdings frage ich mich, warum du die 800x600 Anwendung nicht direkt Fullscreen laufen lässt, das funktioniert doch bei Windows einwandfrei von Haus aus....

  • Zeichen zählen

    • Andy
    • 3. Februar 2010 um 22:38
    [autoit]

    stringreplace("aaaabbbbaaaaaccccaaaaa","a","a")
    msgbox(0,0,"anzahl a´s :"&@extended)

    [/autoit]

    man muß die Zeichen ja nicht unbedingt mit anderen ersetzen....

  • Ordner scannen?!

    • Andy
    • 2. Februar 2010 um 15:15

    in SciTe gibts unter "Extras" den Menüpunkt OrganizeIncludes. Das bindet dir die benötigten Includes automatisch ein.

  • Wenn das Schäuble damals schon gewusst hätte

    • Andy
    • 31. Januar 2010 um 11:50

    Diese sog. "Löcher" sind in der Sicherheitsszene seit langem bekannt und wirklich NIEMAND juckt sich ernsthaft darum, da auch, genau wie bei den meisten anderen Bereichen, im Schadensfall niemand zur Verantwortung gezogen wird! Welcher Beauftragte, Politiker, Abgeordnete, Vorstand, Aufsichtsrat wurde hierzulande jemals mit seinem Privatvermögen für die von ihm verzapfte "Schei**" zur Verantwortung gezogen?

    Ich erinnere mich an eine Reparatur einer von mir installierten, einbruchhemmnden Tür- und Fensteranlage mit teilweise schusshemmenden Elementen. In einem Fensterelement waren neben den überaus heftigen (übrigens im normalbetrieb unsichtbaren) mechanischen Schutzeinrichtungen auch von mir installierte elektronische Sensoren verbaut. Für die Reparatur musste die die unterste Ebene der Einbruchmeldeanlage für den Zugriff freigeschaltet werden. Dafür war ein Anruf bei der aufgeschalteten Sicherheitsfirma fällig:
    Ich:"Guten Tag, hier ist ...... von der Fa. ......., ich bin hier bei meinem Kunden XXXXX in der YYYYY-Straße in ZZZZZZ und muß einen Sensor an einem der Fenster prüfen. Dazu müsst ihr die Einbruchmeldeanlage abschalten."
    Er:"Guten Tag Herr ......, kein Problem, erledige ich sofort hier am PC, schon nach unserem Gespräch können sie loslegen"
    Es erfolgte weder die in diesen Fällen obligatorische Passwortabfrage noch der Kontrollanruf seinerseits. Und das bei einem Kunden, der in höchstem Maß Gefahr für Leib und Leben ausgesetzt war!

    Und das ist kein Einzelfall! Wenn schon "geschultem und ausgebildeten" Personal solche "Fehler" passieren (die in den allermeisten Fällen auch keinerlei Konsequenzen haben), was muß dann eine Person mit "Führungsverantwortung" fürchten? Richtig, GARNICHTS! Die Inkompetenz ist in den allermeisten Entscheidungsebenen schon fast Beförderungskriterium geworden. Je weniger Ahnung von der Materie, desto besser, im Schadensfall kann man sich so immer schön auf seine Unwissenheit berufen. Persönliche Konsequenzen sind idR ausgeschlossen, Beispiel Bankenkrise.

    Zitat

    Wenn das Schäuble damals schon gewusst hätte...

    Schäuble hat den (gegenüber seinen Kollegen) großen Vorteil, daß er am eigenen Leib erfahren hat, daß man bestimmte Sachen nicht mal einfach so unter den Tisch kehren kann sondern auch für sein Tun verantwortlich ist! Die große Angst vor "Terroristen" begründet sich in Politikerkreisen ja offensichtlich darin, daß berechtigte Zweifel daran bestehen daß von jedem akzeptiert wird tun und lassen zu können was man will!
    Vor 30 Jahren hingen bei jedem Bäcker und Metzger die Fahndungsfotos an der Tür, niemand aus der "normalen" Bevölkerung war damals bedroht, trotzdem wurde immenses Kapital bereitgestellt, der Polizeiapparat aufgepumpt, im Eilverfahren Gesetze geändert/geschaffen uswusf...
    Ist das heute etwa anders?
    Fühlt sich jemand von euch persönlich von Terroristen bedroht?
    Die Schäublemania ist nirgendwo auf der Welt dazu gedacht, die Bevölkerung zu schützen, sondern zu kontrollieren.
    Da passt die von der US-Regierung bei der chinesischen Google-Software geforderte Backdoor (durch die dann die "Hacker" Zugriff auf die Daten bekamen) wie die Faust aufs Auge.

  • Rekursionseinstieg: Fakultät - Logikproblem!?

    • Andy
    • 26. Januar 2010 um 19:49

    Ich erwähnte oben, daß der Autoit-Code im Zusammenspiel mit dem Bytecode noch zu "tunen" sei...

    [autoit]

    $tCodeBuffer = DllStructCreate("byte[512]") ;Speicher für den assemblercode belegen
    DllStructSetData($tCodeBuffer, 1, "0x558BECC7C100000000C7C001000000C7C30100000081F902000000761A81E90200000003C38BD02BD349E30D03C28BD82BDA67E2EEEB028BC15DC3") ;das ist der bytecode
    $substruct = DllStructCreate("byte[4]", DllStructGetPtr($tCodeBuffer) + 5) ;position der Variablen im bytecode

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To 46 ;die Fibonaccizahlen von 1-46
    DllStructSetData($substruct, 1, $i) ; Inhalt der Variablen an die Position im Bytecode setzen
    $a = DllCall("user32.dll", "int", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), "int", 0, "int", 0, "int", 0, "int", 0);bytecode aufrufen, rückgabe in a[0]
    ConsoleWrite("Die " & $i & ". Fibonaccizahl lautet " & $a[0] & " Berechnungszeit: " & $x & " ms" & @CRLF)
    Next

    [/autoit]

    Auf diese Art und Weise lassen sich nicht nur Variablen, sondern auch Pointer auf API-Funktionen übergeben. Da diese schon im Speicher stehen, entfällt das komplette (mit relativ viel Overhead verbundene) Procedere des DLL-Calls. Funktionsparameter in der richtigen Reihenfolge auf den Stack pushen, Funktionspointer in eax, Call eax, fertig....ggf werde ich dafür auch mal ein Beispiel machen. Gerade für sehr viele Funktionsaufrufe wird sich das lohnen, der Overhead fällt ja komplett weg!

  • Stoppuhr für Fußball

    • Andy
    • 26. Januar 2010 um 17:10
    Zitat

    Frei Übersetzt: Ohne Geld wird sich da nichts ergeben.

    Wie Prog@ndy schon geschrieben hat, wenn´s interessiert und/oder FUN macht, ist es jede Zeit wert^^. Es kommt auf die Frage- und auf die Aufgabenstellung an! Hab mich bei meinem Script nicht gerade reingehängt, in etwa ne Stunde incl. Kaffeetrinken, Kuchen essen, Telefonieren... :D
    Das läuft dann so nebenbei aus den Fingern ;)

  • Rekursionseinstieg: Fakultät - Logikproblem!?

    • Andy
    • 26. Januar 2010 um 15:58
    Zitat

    Dann kann man gleich 2 Versionen erstellen, einmal x86 und einmal x64. Damit läuft es dann auch im 64bit-modus von AutoIt

    Dazu habe ich noch eine Frage. Gesetzt den Fall, es wird mit AutoIt32 ein Script gebastelt, welches (Im eingefügten Bytecode) 64-Bit Befehle verarbeitet. Werden die dann auf einer 64-Bit-Maschine mit 32-Bit BS auch ausgeführt, oder führt das zu einer Schutzverletzung? Eigentlich sollte das BS davon ja überhaupt nichts mitbekommen, oder werden 64-Bitbefehle erkannt und nicht zugelassen?

  • Rekursionseinstieg: Fakultät - Logikproblem!?

    • Andy
    • 26. Januar 2010 um 15:32
    Zitat

    einmal x86 und einmal x64

    genau so siehts aus^^.
    Da der Code auch bei "größeren" Projekten sehr kompakt wird, könnte man beide Funktionen abhängig vom BS implementieren, falls es wirklich mal auf Geschwindigkeit ankommen sollte.

    Als Beispiel mal den CRC32-Checksum in Assembler:
    Ich habe die Bytecodes wieder angefügt

    Spoiler anzeigen
    [autoit]

    #include <ASM.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Func AsmCRC32($Data, $CRC32 = -1)
    Local $AsmObj = AsmInit()
    AsmAdd($AsmObj, " enter 400h,0 ");C8 00 0400
    AsmAdd($AsmObj, " push ebx ");53
    AsmAdd($AsmObj, " mov edx,0EDB88320h ");C7 C2 2083B8ED
    AsmAdd($AsmObj, " mov ecx,100h ");C7 C1 00010000
    AsmAdd($AsmObj, "L3: ")
    AsmAdd($AsmObj, " lea eax,[ecx-1] ");8D 81 FFFFFFFF
    AsmAdd($AsmObj, " push ecx ");51
    AsmAdd($AsmObj, " push 8 ");68 08000000
    AsmAdd($AsmObj, " pop ecx ");59
    AsmAdd($AsmObj, "L2: ")
    AsmAdd($AsmObj, " shr eax,1 ");C1 E8 01
    AsmAdd($AsmObj, " jnc $+4 ");73 02 ; jnc @L1
    AsmAdd($AsmObj, " xor eax,edx ");33 C2
    AsmAdd($AsmObj, "L1: ")
    AsmAdd($AsmObj, " loop @L2 ");67 E2 F6
    AsmAdd($AsmObj, " pop ecx ");59
    AsmAdd($AsmObj, " mov [ebp+ecx*4-404h],eax");89 84 8D FCFBFFFF

    [/autoit] [autoit][/autoit] [autoit]

    AsmAdd($AsmObj, " loop @L3 ");67 E2 DE
    AsmAdd($AsmObj, " mov ebx,[ebp+8] ");8B 9D 08000000
    AsmAdd($AsmObj, " mov ecx,[ebp+0Ch] ");8B 8D 0C000000
    AsmAdd($AsmObj, " mov eax,[ebp+10h] ");8B 85 10000000
    AsmAdd($AsmObj, " test ebx,ebx ");85DB
    ;
    AsmAdd($AsmObj, " je $+19 ");74 17 ;je @L4
    AsmAdd($AsmObj, " jecxz $+17 ");E3 15 ;jecxz @L4
    AsmAdd($AsmObj, "L5: ")
    AsmAdd($AsmObj, " mov dl,[ebx] ");8A 13 ;235
    AsmAdd($AsmObj, " xor dl,al ");32 D0
    AsmAdd($AsmObj, " movzx edx,dl ");0F B6 D2
    AsmAdd($AsmObj, " shr eax,8 ");C1 E8 08
    AsmAdd($AsmObj, " xor eax,[ebp+edx*4-400h]");33 8495 00FCFFFF
    AsmAdd($AsmObj, " inc ebx ");43
    AsmAdd($AsmObj, " loop @L5 ");67 E2 EB
    AsmAdd($AsmObj, "L4: ")
    AsmAdd($AsmObj, " not eax ");F7D0
    AsmAdd($AsmObj, " pop ebx ");5B
    AsmAdd($AsmObj, " leave ");C9
    AsmAdd($AsmObj, " ret ");C3

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]")
    DllStructSetData($Input, 1, $Data)

    [/autoit] [autoit][/autoit] [autoit]

    Local $Ret = MemoryFuncCall("uint:cdecl", AsmGetPtr($AsmObj), "ptr", DllStructGetPtr($Input), "uint", BinaryLen($Data), "int", $CRC32)
    AsmExit($AsmObj)

    [/autoit] [autoit][/autoit] [autoit]

    Return $Ret[0]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    $CRC32 = AsmCRC32("The quick brown fox jumps over the lazy dog")
    MsgBox(0, 'Method 1 Result', Hex($CRC32))

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    /EDIT/ Dateigrößen von 22MB werden in 13 Millisekunden abgefertigt....

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™