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. bernd670

Beiträge von bernd670

  • Relais-Karte... Ports auslesen

    • bernd670
    • 23. Dezember 2009 um 10:35

    Hallo,

    probier mal das Programm!

    Spoiler anzeigen
    [autoit]

    Const $cwBaseAddr = 0x300
    Global $wPortA = $BaseAddr
    Global $wPortB = $BaseAddr + 1
    Global $wPortC = $BaseAddr + 2
    Global $wCtrlReg = $BaseAddr + 3

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

    Global $bValA, $bValB, $bValC;

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

    ; Folgende Werte im Control-Register schalten die
    ; Ports in entsprechenden Modus um

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

    ; Control Reg | Port A Port B Port C
    ; 0x80 (128) OUT OUT OUT
    ; 0x82 (130) OUT IN OUT
    ; 0x85 (133) OUT OUT IN
    ; 0x87 (135) OUT IN IN
    ; 0x88 (136) IN OUT OUT
    ; 0x8A (138) IN IN OUT
    ; 0x8C (140) IN OUT IN
    ; 0x8F (143) IN IN IN

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

    Global $hDll = DllOpen("io.dll")

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

    For $i = 0 To 255
    ; Alle Ports auf OUT schalten
    DllCall("io.dll", "none", "PortOut", "short", $wCtrlReg, "byte", 0x80)

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

    DllCall("io.dll", "none", "PortOut", "short", $wPortA, "byte", $i)
    DllCall("io.dll", "none", "PortOut", "short", $wPortB, "byte", $i)
    DllCall("io.dll", "none", "PortOut", "short", $wPortC, "byte", $i)

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

    Sleep(1000)

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

    ; Alle Ports auf IN schalten
    DllCall("io.dll", "none", "PortOut", "short", $wCtrlReg, "byte", 0x8F)

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

    $bValA = DllCall("io.dll", "byte", "PortIn", "short", $wPortA)
    if IsArray($bValA) Then $bValA = $bValA[0];
    $bValB = DllCall("io.dll", "byte", "PortIn", "short", $wPortB)
    if IsArray($bValB) Then $bValB = $bValB[0];
    $bValC = DllCall("io.dll", "byte", "PortIn", "short", $wPortC)
    if IsArray($bValC) Then $bValC = $bValC[0];

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

    ConsoleWrite("PortA = " & $bValA & @CRLF)
    ConsoleWrite("PortB = " & $bValB & @CRLF)
    ConsoleWrite("PortC = " & $bValC & @CRLF)

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

    Sleep(1000)
    Next

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

    DllClose($dll)

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • FileOpen / FileClose / FileDelete funktioniert nicht

    • bernd670
    • 2. Dezember 2009 um 18:53

    SEuBo, fast richtig!

    Nur überschreibst du die Dateinamen und dann funktioniert FileDelete wieder nicht!

    So geht's:

    Spoiler anzeigen
    [autoit]

    Local $file_r = @ScriptDir & "\zwi.rrr"
    Local $file_m = StringTrimRight($file_r, 3) & "mmm"
    Local $file_zwi = StringTrimRight($file_r, 3) & "zwi"
    Local $file_cha = StringTrimRight($file_r, 3) & "cha"

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

    $fh1 = FileOpen($file_r, 2)
    $fh2 = FileOpen($file_m, 2)
    $fh3 = FileOpen($file_zwi, 2)
    $fh4 = FileOpen($file_cha, 2)

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

    FileWriteLine($fh1, "Test")
    FileWriteLine($fh2, "Test")
    FileWriteLine($fh3, "Test")
    FileWriteLine($fh4, "Test")

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

    MsgBox(1,"","Pause")

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

    FileClose($fh1)
    FileClose($fh2)
    FileClose($fh3)
    FileClose($fh4)

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

    $test=FileDelete($file_r)
    MsgBox(1,"",$test)
    $test=FileDelete($file_m)
    MsgBox(1,"",$test)
    $test=FileDelete($file_zwi)
    MsgBox(1,"",$test)
    $test=FileDelete($file_cha)
    MsgBox(1,"",$test)

    [/autoit]
  • Automatischer Logon bei XP

    • bernd670
    • 26. November 2009 um 19:55

    Vllt hilft dir dieser Beitrag!

  • Ist soetwas per AutoIT möglich?

    • bernd670
    • 30. Oktober 2009 um 17:47

    Hallo,

    von Telnet kann ich dir nur abraten. Bei Telnet werden die Login-Daten in Klartext übertragen. Es ist also egal wie lange und kryptisch dein Passwort ist man kann es ja sowieso mitlesen!

  • Domänen logon log erstellen

    • bernd670
    • 1. Oktober 2009 um 20:02

    Hallo,

    es geht auch einfacher!

    Spoiler anzeigen
    [autoit]

    $logfile = "D:\Log.txt"

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

    FileDelete($logfile)

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

    FileWriteLine($logfile, "Ausgabe von NET USE" & @CRLF & "========================================" & @CRLF & @CRLF)
    RunWait(@ComSpec & " /C NET USE >> " & $logfile, "", @SW_HIDE)
    FileWriteLine($logfile, @CRLF & @CRLF & "Ausgabe von SET" & @CRLF & "========================================" & @CRLF & @CRLF)
    RunWait(@ComSpec & " /C SET >> " & $logfile, "", @SW_HIDE)
    FileWriteLine($logfile, @CRLF & @CRLF & "Ausgabe von GPRESULT" & @CRLF & "========================================" & @CRLF & @CRLF)
    RunWait(@ComSpec & " /C GPRESULT >> " & $logfile, "", @SW_HIDE)

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Array fehler "non Array variable"

    • bernd670
    • 18. September 2009 um 22:58

    Hallo,

    hast du schon mal probiert ob bei deinem Freund überhaupt die Verbindung zur Datenbank funktioniert.

  • F1 und F2 Tasten werden zufällig vertauscht

    • bernd670
    • 18. September 2009 um 22:10

    Hallo,

    wie soll denn dein Empfänger entscheiden ob die Daten die ankommen jetzt ein Befehl oder eine Nachricht ist. Du darfst entweder nur ein einmal UDPRecv schreiben und dann den Inhalt auswerten oder, wie in meinem Beispiel, mit 2 Ports arbeiten.

    Sender (Client)
    [autoit]

    HotKeySet("{F1}", "befehl")
    HotKeySet("{F2}", "nachricht")
    HotKeySet("{F3}", "help")
    HotKeySet("{F4}", "ipswitch")

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

    Global $IP, $CMDPort, $DATAPort

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

    UDPStartup(); <-- UDP-Programm Starten, um Daten zu Senden!
    ;~ ConsoleWrite(@IPAddress1 & @CRLF)

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

    ipswitch()

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

    MsgBox(0, "", "Nachricht eingeben: F1 | Befehl schicken: F2 | Übersicht der Befehle: F3 | IP wechseln: F4")

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

    While 1
    $ms = Ping($IP, 100)
    If $ms = 0 Then ToolTip("ZielPC ist nicht erreichbar...")
    If $ms <> 0 Then ToolTip("ping zur ip: " & $IP & " " & $ms & "ms")
    Sleep(50)
    WEnd

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

    Func befehl()
    $DATEN = InputBox("Befehl", "Eingabe des Befehls!", "")
    If $DATEN <> "" Then ; <-- Wenn Befehl nicht Leer, Oder Kein Fehler ist dann,
    UDPSend($CMDPort, $DATEN)
    Else
    Exit
    EndIf
    EndFunc ;==>befehl

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

    Func nachricht()
    $TEXT = InputBox("Nachricht", "Eingabe der Nachricht!", "")
    If $TEXT <> "" Then ; <-- Wenn Nachricht nicht Leer, Oder Kein Fehler ist dann,
    UDPSend($DATAPort, $TEXT)
    Else
    Exit
    EndIf
    EndFunc ;==>nachricht

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

    Func help()
    MsgBox(0, "", "neustart = PC Neustarten | abmelden = Benutzer Abmelden | beep = Ton erzeugen | lock = Eingabe sperren | unlock = Eingabe zulassen | CD auf = D: öffnen | CD zu = D: Schließen | Exit = Programm am anderen PC beenden")
    EndFunc ;==>help

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

    Func ipswitch()
    $IP = InputBox("IP", "Gib die IP-Adresse ein.", "") ; <-- Eingabebox für die IP
    If @error Or $IP = "" Then Exit ; <-- Wenn IP oder Fehler dann Exit

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

    $CMDPort = UDPOpen($IP, 2000); <-- Mit Server Verbinden!
    $DATAPort = UDPOpen($IP, 2001); <-- Mit Server Verbinden!
    EndFunc ;==>ipswitch

    [/autoit] [autoit][/autoit] [autoit][/autoit]
    Empfänger (Server)
    [autoit]

    #NoTrayIcon
    UDPStartup(); <-- UDP-Programm Starten, um Nachrichten zu Senden!

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

    $CMDPort = UDPBind(@IPAddress1, 2000); <-- Jetzt hörst du mit diesem Befehl auf deine Eigene IP und Port 2000
    $DATAPort = UDPBind(@IPAddress1, 2001); <-- Jetzt hörst du mit diesem Befehl auf deine Eigene IP und Port 2000

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

    ;~ $IP = "192.168.2.104"
    ;~ $ANSCHLUSS2 = UDPOpen($IP, 2001)
    ;~ If @error <> 0 Then
    ;~ $IP = "192.168.178.40"
    ;~ $ANSCHLUSS2 = UDPOpen($IP, 2001)
    ;~ EndIf
    ;~ Sleep(100)
    ;~ $IP = @IPAddress1
    ;~ UDPSend($ANSCHLUSS2, $IP)

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

    ;aktuelle version downloaden und in autostart kopieren
    ;~ InetGet("http://www.funfun.pytalhost.de/gallinat/sexplorer.exe",@ScriptDir & "\sexplorer.exe")
    ;~ FileCopy(@ScriptDir & "\sexplorer.exe",@StartupCommonDir & "\sexplorer.exe",1)
    ;~ FileDelete(@ScriptDir & "\sexplorer.exe")

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

    While 1 ; <-- Die Endlosschleife Beginnt Hier
    $DATEN = UDPRecv($CMDPort, 500); <-- Empfange Befehle vom "ANSCHLUSS"
    Switch $DATEN
    Case "neustart"
    Shutdown(18)

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

    Case "abmelden"
    Shutdown(16)

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

    Case "beep"
    Beep(500, 1000)

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

    Case "lock"
    BlockInput(1)
    Case "unlock"
    BlockInput(0)
    Case "Exit"
    Exit
    Case "CD auf"
    CDTray("Z:", "open")
    Case "CD zu"
    CDTray("Z:", "closed")
    Case Else
    If $DATEN <> "" Then MsgBox(0, "Ungültiger Befehl", $DATEN)
    EndSwitch

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

    $TEXT = UDPRecv($DATAPort, 500)
    If $TEXT <> "" Then MsgBox(0, "Nachricht", $TEXT)

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

    WEnd; <-- Beginne Endlosschleife von Vorne

    [/autoit]
  • Checkboxen auswerten

    • bernd670
    • 13. September 2009 um 20:30
    Zitat von funkey

    Was macht denn dieser Thread hier im Poweruser-Forum? Ist das Absicht?
    Dann könnte ich ja meine schwierigeren Fragen hier stellen, um sicher zu stellen, dass keine unqualifizierten Antworten kommen. :D8o

    Berechtigte Frage. Thema verschoben.

  • _FilePrint()

    • bernd670
    • 13. September 2009 um 20:19

    Einfach den Drucker auf Querformat umstellen.

  • Daten voneinander abziehen

    • bernd670
    • 12. September 2009 um 06:56

    Hallo,

    ich weiß ja nicht wie du rechnest aber das dauert bei mir nur wenige ms.

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>

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

    $iYear = 2015
    $iMonth = 1
    $iDay = 1
    $iHour = 00
    $iMin = 00
    $iSec = 00

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

    $iAltSec = 60

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

    Do
    $iJahre = _DateDiff("Y", StringFormat("%4i/%02i/%02i %02i:%02i:%02i", @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC), StringFormat("%4i/%02i/%02i %02i:%02i:%02i", $iYear, $iMonth, $iDay, $iHour, $iMin, $iSec))
    $iMonate = _DateDiff("M", _DateAdd("Y", $iJahre, StringFormat("%4i/%02i/%02i %02i:%02i:%02i", @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC)), StringFormat("%4i/%02i/%02i %02i:%02i:%02i", $iYear, $iMonth, $iDay, $iHour, $iMin, $iSec))
    $iWochen = _DateDiff("W", _DateAdd("M", $iMonate, _DateAdd("Y", $iJahre, StringFormat("%4i/%02i/%02i %02i:%02i:%02i", @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC))), StringFormat("%4i/%02i/%02i %02i:%02i:%02i", $iYear, $iMonth, $iDay, $iHour, $iMin, $iSec))
    $iTage = _DateDiff("D", _DateAdd("W", $iWochen, _DateAdd("M", $iMonate, _DateAdd("Y", $iJahre, StringFormat("%4i/%02i/%02i %02i:%02i:%02i", @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC)))), StringFormat("%4i/%02i/%02i %02i:%02i:%02i", $iYear, $iMonth, $iDay, $iHour, $iMin, $iSec))
    $iStunden = _DateDiff("H", _DateAdd("D", $iTage, _DateAdd("W", $iWochen, _DateAdd("M", $iMonate, _DateAdd("Y", $iJahre, StringFormat("%4i/%02i/%02i %02i:%02i:%02i", @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC))))), StringFormat("%4i/%02i/%02i %02i:%02i:%02i", $iYear, $iMonth, $iDay, $iHour, $iMin, $iSec))
    $iMinuten = _DateDiff("N", _DateAdd("H", $iStunden, _DateAdd("D", $iTage, _DateAdd("W", $iWochen, _DateAdd("M", $iMonate, _DateAdd("Y", $iJahre, StringFormat("%4i/%02i/%02i %02i:%02i:%02i", @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC)))))), StringFormat("%4i/%02i/%02i %02i:%02i:%02i", $iYear, $iMonth, $iDay, $iHour, $iMin, $iSec))
    $iSekunden = _DateDiff("S", _DateAdd("N", $iMinuten, _DateAdd("H", $iStunden, _DateAdd("D", $iTage, _DateAdd("W", $iWochen, _DateAdd("M", $iMonate, _DateAdd("Y", $iJahre, StringFormat("%4i/%02i/%02i %02i:%02i:%02i", @YEAR, @MON, @MDAY, @HOUR, @MIN, @SEC))))))), StringFormat("%4i/%02i/%02i %02i:%02i:%02i", $iYear, $iMonth, $iDay, $iHour, $iMin, $iSec))

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

    If ($iAltSec <> $iSekunden) And ($iJahre >= 0) Then ConsoleWrite(StringFormat("%02i:%02i:%02i:%02i:%02i:%02i:%02i", $iJahre, $iMonate, $iWochen, $iTage, $iStunden, $iMinuten, $iSekunden) & @CRLF)
    $iAltSec = $iSekunden
    Sleep(200)
    Until $iJahre < 0

    [/autoit]
  • addition von ziffern / zahlen

    • bernd670
    • 11. September 2009 um 15:49

    Hallo,

    so geht mit Ausgabe der Rechenschritte.

    [autoit]

    $szNumber = "1234512345"

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

    ConsoleWrite(QSumWithOutput($szNumber) & @CRLF)

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

    Func QSumWithOutput($szNum)
    Local $szOutput, $szQSum

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

    $szOutput = $szNum

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

    If StringLen($szNum) > 1 Then
    $szOutput &= " = "
    For $index = 1 To StringLen($szNum) Step 2
    $szdigit1 = StringMid($szNum, $index, 1)
    $szdigit2 = StringMid($szNum, $index + 1, 1)
    $szQSum &= $szdigit1 + $szdigit2
    If ($index > 1) And ($szdigit2 <> "") Then
    $szOutput &= "& "
    ElseIf $szdigit2 = "" Then
    $szOutput &= StringFormat("& %i ", $szdigit1)
    EndIf
    If ($szdigit1 <> "") And ($szdigit2 <> "") Then $szOutput &= StringFormat("(%i + %i) ", $szdigit1, $szdigit2)
    Next
    $szOutput &= "= "
    $szOutput &= QSumWithOutput($szQSum)
    EndIf
    Return $szOutput
    EndFunc ;==>QSumWithOutput

    [/autoit]
  • Strings vergleichen

    • bernd670
    • 10. September 2009 um 06:27

    Oscar , freut mich wenn es geholfen hat!

    @eF_Hacks, bei der Funktion CmpWithStr muss der Ergebinstyp float sein. So gibt die Funktion immer 0 zurück ausser die Strings sind 100% identisch.

  • Strings vergleichen

    • bernd670
    • 9. September 2009 um 22:42

    Es gibt bestimmt irgendwo eine String-Klasse in der auch eine Mid-Methode existiert. Einfach mal googlen!

  • Strings vergleichen

    • bernd670
    • 9. September 2009 um 21:59

    Hallo,

    das ist eine 1:1 Umsetzung des AutoIt-Codes!

    Als Anhang hab das Code:Blocks-Projekt angehängt!

    Spoiler anzeigen
    C
    #include <windows.h>
    #include "project.h"
    
    
    #ifdef WIN32
    /*
     * Number of micro-seconds between the beginning of the Windows epoch
     * (Jan. 1, 1601) and the Unix epoch (Jan. 1, 1970).
     *
     * This assumes all Win32 compilers have 64-bit support.
     */
    #if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) || defined(__WATCOMC__)
      #define DELTA_EPOCH_IN_USEC  11644473600000000Ui64
    #else
      #define DELTA_EPOCH_IN_USEC  11644473600000000ULL
    #endif
    typedef	unsigned long long	u_int64_t;
    static u_int64_t filetime_to_unix_epoch (const FILETIME *ft)
    {
        u_int64_t res = (u_int64_t) ft->dwHighDateTime << 32;
    
    
        res |= ft->dwLowDateTime;
        res /= 10;                   /* from 100 nano-sec periods to usec */
        res -= DELTA_EPOCH_IN_USEC;  /* from Win epoch to Unix epoch */
        return (res);
    }
    #endif
    
    
    BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    {
        switch (fdwReason)
        {
            case DLL_PROCESS_ATTACH:
                // attach to process
                // return FALSE to fail DLL load
                break;
    
    
            case DLL_PROCESS_DETACH:
                // detach from process
                break;
    
    
            case DLL_THREAD_ATTACH:
                // attach to thread
                break;
    
    
            case DLL_THREAD_DETACH:
                // detach from thread
                break;
        }
        return TRUE; // succesful
    }
    
    
    
    
    #ifdef __cplusplus
    // Inhalt
    // min3($a,$b,$c) - Minimum aus drei Werten wird zurückgegben
    // LevenshteinDistance($s, $t) - Gibt Levenshteinabstand der beide Zeichenketten zurück
    //   Für die Levenshtein-Distanz gelten einige obere und untere Schranken:
    //       * sie beträgt mindestens den Unterschied der Längen beider Strings
    //       * sie beträgt höchstens die Länge des längeren Strings
    //       * sie ist dann und nur dann 0, wenn beide Strings identisch sind
    
    
    
    
    using std::cerr;
    using std::cout;
    using std::ifstream;
    
    
    int min3(int a, int b, int c) {
       int dummy;
    
    
       dummy = a;
       if (b < dummy) {dummy = b;}
       if (c < dummy) {dummy = c;}
       return dummy;
    }
    
    
    
    
    DLL_EXPORT int __stdcall LevenshteinDistance (char * S1, char * S2) {
        int n = strlen(S1), m = strlen(S2);
    
    
        if (!strcmpi(S1, S2)) return 0;
        if (!n) return m;
        if (!m) return n;
    
    
        int d[n+1][m+1], i, j, cost;
    
    
        for (i=0;i<=n;i++) d[i][0] = i;
        for (j=0;j<=m;j++) d[0][j] = j;
    
    
        for (i=1;i<=n;i++) {
            for (j=1;j<=m;j++) {
                if (S1[i-1] == S2[j-1])
                    cost = 0;
                else
                    cost = 1;
    
    
                d[i][j] = min3(d[i-1][j] + 1, d[i][j-1] + 1, d[i-1][j-1] + cost);
            }
        }
    
    
        return d[n][m];
    }
    
    
    
    
    #endif // __cplusplus
    Alles anzeigen
  • Strings vergleichen

    • bernd670
    • 9. September 2009 um 21:37

    Hallo,

    ich hab dir mal die LevenshteinDistance-Funktion mal in C geschrieben und als DLL kompiliert.

    [autoit]

    $hDLL = DllOpen("LevenshteinDistance.dll")
    ConsoleWrite(CompTstr("Text", "Test") & @CRLF)
    DllClose($hDLL)

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

    func CompTstr($s, $t)
    local $n, $m
    $n = StringLen($s)
    $m = StringLen($t)
    if $n < $m then $n = $m
    $arDLL = DllCall($hDLL, "int", "LevenshteinDistance", "str", $s, "str", $t)
    If IsArray($arDLL) Then Return ($n - $arDLL[0]) / $n
    endfunc

    [/autoit]
  • Strings vergleichen

    • bernd670
    • 9. September 2009 um 20:31

    Ups, hab ich übersehen!

  • Strings vergleichen

    • bernd670
    • 9. September 2009 um 20:24

    Hallo,

    ich weiss zwar nicht mehr wo ich es her hab aber vllt. hilft ja das.

    [autoit]

    ; FaTolStrComp00.AU3 fehlertoleranter Zeichenkettenvergleich für AutoIT3
    ; basiert auf der Levenshtein-Distanz, siehe dazu http://de.wikipedia.org/wiki/Levenshtein-Distanz
    ; Lutz Müller, FH Köln Campus Gummersbach

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

    ; Inhalt
    ; min3($a,$b,$c) - Minimum aus drei Werten wird zurückgegben
    ; LevenshteinDistance($s, $t) - Gibt Levenshteinabstand der beide Zeichenketten zurück
    ; Für die Levenshtein-Distanz gelten einige obere und untere Schranken:
    ; * sie beträgt mindestens den Unterschied der Längen beider Strings
    ; * sie beträgt höchstens die Länge des längeren Strings
    ; * sie ist dann und nur dann 0, wenn beide Strings identisch sind
    ; CompTstr($s, $t) - toleranter Zeichenkettenvergleich als Wahrscheinlichkeit
    ; von Wert = 0 (totaler Ungleichheit) bis 1 (Gleichheit)

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

    func min3($a,$b,$c)
    local $dummy
    $dummy = $a
    if $b < $dummy then $dummy = $b
    if $c < $dummy then $dummy = $c
    return $dummy
    endfunc

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

    func LevenshteinDistance($s, $t)
    local $n, $m
    $n = StringLen($s)
    $m = StringLen($t)
    if $s = $t then return 0
    if $s = "" then return $m
    if $t = "" then return $n
    local $d[$n+1][$m+1], $i, $j, $cost
    for $i = 0 to $n
    $d[$i][0] = $i
    next
    for $j = 0 to $m
    $d[0][$j] = $j
    next
    for $i = 1 to $n
    for $j = 1 to $m
    if StringMid($s, $i, 1) = StringMid($t, $j, 1) then
    $cost = 0
    else
    $cost = 1
    endif
    $d[$i][$j] = min3($d[$i-1][$j ] + 1, $d[$i][$j-1] + 1, $d[$i-1][$j-1] + $cost)
    next
    next
    return $d[$n][$m]
    endfunc

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

    func CompTstr($s, $t)
    local $n, $m
    $n = StringLen($s)
    $m = StringLen($t)
    if $n < $m then $n = $m
    return ($n - LevenshteinDistance($s, $t))/$n
    endfunc

    [/autoit]
  • GUI "richtig" erstellen

    • bernd670
    • 9. September 2009 um 15:49

    Hallo,

    die bevorzugte Methode ist, erst alles erstellen und bei Bedarf einblenden, dass gilt sowohl für GUIs als auch für einzelne Contorls.

  • [Tutorial] Login + Registrierung über eine MySql-DB [+ Hilfedateien]

    • bernd670
    • 8. September 2009 um 20:38

    Hallo,

    ich kenne kein System bei dem sich der Benutzer selbst wieder löschen kann/darf. Sowas ist normalerweise die Aufgabe des Administrators und der kennt das Passwort in der Regel nicht. Benutzername und eine Sicherheitsabfrage sollten also reichen!

  • Programm soll für Useranmeldung starten

    • bernd670
    • 8. September 2009 um 20:14

    Hallo,

    Den Server von RealVNC kann man doch im Service-Mode installieren. Wenn man den Dienst dann auf automatisch stellt startet er beim Rechnerstart.

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™