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

Beiträge von Ealendil

  • [Gelöst] Gui-Udf

    • Ealendil
    • 3. Dezember 2010 um 12:08

    Hi,

    ich glaube es liegt eher daran, dass bei der Erstellung des GUI-Arrays das Element "hwnd" nicht initialisiert wird,
    sprich dieses durch evtl. Speicherreste x-beliebige Werte annehmen kann, wodurch die Abfrage dieses zu unerwartenden Fehlern
    führen kann und dass du nach der for-Schleife, in
    GUICreate(), nicht "ngui" prüfst ob dieses einen Wert zugewiesen bekommen hat.
    Sprich folgende Codezeilen würde umändern/hinzufügen:

    Code
    GUI(void) {this->hwnd = NULL;};


    Als Basis-Konstruktor der Klasse "GUI". Natürlich muss dieser "public" sein.

    Zitat


    GUI *ngui = NULL;


    Bei Zeile 43, nur um sicher zu gehen, dass später alles richtig läuft, liegt ein Fehler beim Zuweisen des Variable "ngui" vor bemerkst du es dann gleich,
    da das Schreiben in einen NULL-Zeiger zu einem sofortigen Fehler führt.


    Zitat


    if(!ngui) {return NULL; }


    Zusätzlich hinzufügen zwischen Zeile 50 und 51.

    Und zu guter Letzt:

    Zitat


    if(g) {
    MessageBox(0, "GUI wurde erstellt!", "Info", MB_OK | MB_ICONINFORMATION);
    } else {
    MessageBox(0, "GUI-Erstellung fehlgeschlagen", "Info", MB_OK | MB_ICONWARNING);
    }


    Zwischen Zeile 159 und 160 hinzufügen.

  • AutoIT Compile

    • Ealendil
    • 27. November 2010 um 21:17

    Hi,

    mit dem Befehl ShellExecute() schau dir hier zu die Hilfe an,
    sowie mit Hilfe dieses Artikels: http://translation.autoit.de/onlinehilfe/intro/compiler.htm

  • Gleicher Grafiktyp verhält sich unterschiedlich

    • Ealendil
    • 26. November 2010 um 15:00

    Ich meinte "transparent" bezogen auf folgenden Satz:

    Zitat

    Problem ist nun, wenn ich diese beiden Bilder in einer GUI einbinden das eine transparent ist und das ander einen weißen Hintergrund hat.

  • Gleicher Grafiktyp verhält sich unterschiedlich

    • Ealendil
    • 26. November 2010 um 14:56

    Hi,

    ich schätze du meinst mit transparent, das man das eine Bild nicht sehen kann.
    Falls ja, so liegt das an dem Namen, den du in GUICtrlCreatePic() eingetragen hast, denn der lautet "bs.gif" und nicht "bt.gif".

  • PixelSearchFile (^^)

    • Ealendil
    • 25. Oktober 2010 um 20:31

    Die Func muss folgendermaßen lauten:

    [autoit]


    Func _GDIPlus_GetPixel($hBitmap,$X,$Y)
    Local $aResult = DllCall($ghGDIPDLL, "int", "GdipBitmapGetPixel", "ptr", $hBitmap, "int", $X, "int", $Y, "dword*", 0)
    If @error Then Return SetError(1,0,0)
    return "0x"& Hex($aResult[0])
    EndFunc

    [/autoit]
  • PixelSearchFile (^^)

    • Ealendil
    • 25. Oktober 2010 um 20:23

    Hi,
    das liegt daran, dass es sich hier um Integer-Werte handelt...Mittels Hex() wandelst du diese in das Hexadezimalsystem um und kannst den Werten leichter Informationen abbnehmen:
    Dabei ist das Farbformat folgendermaßen aufgebaut:
    0xAARRGGBB, nur falls Alphawerte unterstützt werden, ansonsten sieht das Format so aus: 0xRRGGBB.
    AA = der Alphaanteil (Transparenz). FF bedeutet vollkommen sichtbar, 00 unsichtbar.
    RR = Rotanteil
    GG = Grünanteil
    BB = Blauanteil
    Sprich die Farbe 0x00FF0000 ist ein unsichtbares Rot,
    die Farbe 0xFFFF0000 ist ein sichtbares Rot,
    die Farbe 0xFF00FF00 ist ein sichtbares Grün,
    die Farbe 0xFF0000FF ist ein sichtbares Blau, usw.
    LG,
    Ealendil

    #Edit: paar Minuten zu spät.

  • PixelSearchFile (^^)

    • Ealendil
    • 24. Oktober 2010 um 18:32

    Hi,
    mittels _GDIPlus_BitmapGetPixel() aus der GDIP.au3.

  • Bild in Speicher schreiben und in GUI anzeigen

    • Ealendil
    • 12. September 2010 um 20:14

    $iW/$iH, gibt die Breite/Höhe des Bildes an, sprich willst du ein Bild mit den Massen 100x80 zeichnen, schreibst du:

    [autoit]

    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, $iX, $iY, 100, 80)

    [/autoit]
  • Bild in Speicher schreiben und in GUI anzeigen

    • Ealendil
    • 12. September 2010 um 19:58

    Hi,

    mit

    [autoit]

    _GDIPLus_GraphicsDrawImageRect

    [/autoit]

    sollte es gehen.

    Nebenbei, du solltest in deinem Beispiel nachdem du dein Bild gezeichnet hast, _GdiPlus_BitmapDispose, bzw. _WinAPI_DeleteObject aufrufen, da du durch den Aufruf von _GDIPlus_BitmapCreateFromHBitmap/_ScreenCapture_Capture
    wieder neuen Speicher "anforderst", und dies ohne "schließen" des Speicherbereichs, ein Speicherleck verursacht.

    LG

  • dlls für berechnungen

    • Ealendil
    • 6. Juni 2010 um 09:45

    Hi,

    hab mich mal durchgelesen und wollte auch mal meinen Senf dazu geben.

    Wenn ich die Funktion "myfunc2" in C++ folgendermaßen verwende:

    Spoiler anzeigen
    Code
    #include <iostream>
    
    
    using namespace std;
    
    
    int* Test(void);
    
    
    int main()
    {
        int* T = Test();
        cout << T << endl;
    
    
        cout << *T << endl;
    
    
        return 0;
    }
    
    
    int* Test(void)
    {
        int Array[3];
        int* zeiger = 0;
    
    
        Array[0] = 111;
        Array[1] = 222;
        Array[2] = 333;
    
    
        aPTR = &Array[0];
        return aPTR;
    }
    Alles anzeigen

    Wird auf der Konsole folgendes ausgegeben:
    "0x22ff30", sowie der Wert "2293472", komisch sollte eigtl. "111" sein.

    Warum das passiert ist im Endeffekt ganz einfach, da in C++ bzw., ich glaub in jeder Programmiersprache, ein Array nichts anderes als ein Pointer/Zeiger
    ist.
    Wenn man in einer Funktion eine Variable deklariert, wird nach dem Funktionsaufruf, diese Speicherstelle (Adresse) wieder vom Wert der Variable "bereinigt",
    die Speicheradresse bleibt vorhanden, nicht aber der Wert, dem man dieser zugewiesen hat.
    Um dieses Problem gibt es das Schlüsselwort "new".
    Mit diesem fordern wir Speicher an, der erst wieder freigegeben wird, wenn wir mit "delete" dies sagen.

    "new" benötigt noch einen Datentyp, sowie muss es wissen ob mehrere verlangt werden:
    "delete" benötigt die Speicheradresse, welche wiederfreigegeben werden soll.

    Spoiler anzeigen
    Code
    int* p = new int;
    int* pt = new int[3];
    
    
    delete p;
    delete[] pt;

    Mal als Beispiel:

    Spoiler anzeigen
    Code
    int* ArrayTest(int x)
    {
       int* aRet = new int[2];
       aRet[0] = x;
       aRet[1] = x * 2;
       return aRet;
    }

    Wir haben hier den Speicher von zwei "int"´s angefordert und mit dem Wert "x" und "x*2", belegt, wir können nun auch noch nach dem Funktionsaufruf diese Werte weiterverwenden.

    Verwenden wir diese "Funktion" mal als Beispiel:

    Spoiler anzeigen
    Code
    #include <iostream>
    
    
    int main()
    {
       int* T = ArrayTest(2);
    
    
       std::cout << T << std::endl;
       std::cout << T[0] << std::endl;
    
    
       return 0;
    }
    Alles anzeigen


    Tada, das Programm gibt uns nun die Speicheradresse von T[0] an, sowie den Wert von T[0].
    Warum gerade die Adresse von T[0], nun ein Array beginnt bei 0 und, solange man den Zeiger darauf nicht verändert zeigt er immer auf den ersten Wert:

    Code
    #include <iostream>
    
    
    int main()
    {
       int* T = ArrayTest(2);
    
    
       std::cout << T << std::endl;
       std::cout << *T << std::endl;
    
    
       return 0;
    }
    Alles anzeigen

    Erhöhen wir nun den Zeiger "T" um 1, so zeigt er auf die nächste Adresse, bzw. in diesem Fall den nächsten Wert:

    Code
    #include <iostream>
    
    
    int main()
    {
        int* T = ArrayTest(2);
        std::cout << T << std::endl;
        std::cout << *T << std::endl;
    
    
        *T++; //*T += 1; ginge auch
    
    
        std::cout << T << std::endl;
        std::cout << *T << std::endl;
    
    
        delete[] T;
        return 0;
    }
    Alles anzeigen

    Der somit berichtigte Anfangscode lautet nun:

    Spoiler anzeigen
    Code
    #include <iostream>
    
    
    int* ArrayTest(void);
    
    
    int main()
    {
        int* T = ArrayTest();
        std::cout << T << std::endl;
    
    
        std::cout << *T << std::endl;
    
    
        delete[] T;
        return 0;
    }
    
    
    int* ArrayTest(void)
    {
        int* Array = new int[3];
        int* aPTR = 0;
    
    
        Array[0] = 111;
        Array[1] = 222;
        Array[2] = 333;
    
    
        aPTR = &Array[0];
        return aPTR;
    }
    Alles anzeigen

    Es ist möglich in C++ ein Array zurückzugeben, der Speicher dazu muss allerdings mit "new/new[x]" angefordert werden, dieser muss dann allerdings mit "delete/delete[]" freigegeben werden.
    Möchte man nur einen "int" anfordern schreibt man nur "new int" und dann "delete xyz", möchte man mehrere "int"´s anfordern, dann
    "new int[x]" und "delete[] xyz", wobei "xyz", die Speicheradresse ist, mit der der Speicher angefordert wurde.
    Statt "int" geht natürlich auch jeder andere Datentyp.

    Hoffe, dass ich alles klar und verständlich erklärt habe.

    LG
    Ealendil

    PS: Ist zwar ein AutoIt-Forum, aber ich dachte vlt. braucht das mal ein AutoIt-ler für C++.

  • Range um Variable

    • Ealendil
    • 28. Mai 2010 um 21:15

    Hi,
    ich kapiers leider immer noch nicht, hab dich in Skype mal geaddet, vlt. kapiers ich dann.

  • Range um Variable

    • Ealendil
    • 28. Mai 2010 um 20:38

    Versteh ungefähr was du meinst, du willst wissen ob X zwischen X-20 und X+20, doch wenn du das meinst, dann wäre das immer wahr, und kann nicht sein was du meinst, kannst du versuchen es mir mit Worten, als mit Codeschnipseln zu sagen?

    LG

  • Range um Variable

    • Ealendil
    • 28. Mai 2010 um 20:24

    Die Funktion prüft, ob der Wert $A zwischen $Min und $Max liegt, als Beispiel sozusagen, $A, $Min und $Max musst du allerdings angeben, also:

    [autoit]


    Global $Check = 3
    MsgBox(0, "Info", _IsBetween($Check, $Check+7, $Check+17)); gibt "False" zurück, da 3 nicht zwischen 10 und 20 liegt.
    MsgBox(0, "Info", _IsBetween($Check, $Check-3, $Check+16)); gibt "True" zurück, da 3 zwischen 0 und 19 liegt.

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

    Func _IsBetween($A, $Min, $Max)
    Return $A >= $Min And $A <= $Max
    EndFunc

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

    Hoffe du verstehst was ich meine.

    LG

  • Range um Variable

    • Ealendil
    • 28. Mai 2010 um 20:14

    Hi,

    hab meinen vorherigen Beitrag editiert, sollte nun logisch sein, was falsch war.

    Zur Func:
    Diese gibt dir True zurück falls dein Wert ($A) zwischen $Min (muss der kleinste Wert sein) und $Max (logischerweise der größere Wert) liegt.
    Andernfalls returnt dir die Func False.

    LG

  • Range um Variable

    • Ealendil
    • 28. Mai 2010 um 20:07

    Hi,

    da ich die Range um eine Variable auch mal gebraucht habe, kann ich dir folgende Func empfehlen:

    [autoit]


    ;Funktion: _IsBetween
    ;Parameter: $A, der zu prüfende Wert
    ; $Min, der kleinste zu prüfende Wert
    ; $Max, der größe zu prüfende Wert
    ;Rückgabe: "True", falls $A ziwschen $Min und $Max liegt,
    ; andernfalls "False".
    Func _IsBetween($A, $Min, $Max)
    Return $A >= $Min And $A <= $Max
    EndFunc

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

    MsgBox(0, "Info", _IsBetween(3, 10, 20)); gibt "False" zurück, da 3 nicht zwischen 10 und 20 liegt.
    MsgBox(0, "Info", _IsBetween(4, 0, 19)); gibt "True" zurück, da 4 zwischen 0 und 19 liegt.

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


    Ist im Endeffekt, genau was name22 gesagt hat.

    Zu deinem Problem:
    Schau dir mal diese Zeile an:

    [autoit]


    If $balloonY = $figurY And $balloonX >= 20 Or $balloonX <= 20 = $figurX Then _GDIPlus_ImageDispose($balloon_red)

    [/autoit]

    Edit1: Willst du dabei abfragen ob $ballonX kleiner gleich 20 oder kleiner gleich $figurX ist, je nach dem musst du es um schreiben zu $ballonX <= 20 oder $balloonX <= $figurX.

    LG
    Ealendil

  • Texte "verschleiern"

    • Ealendil
    • 1. April 2010 um 16:11

    Hi,

    hab mich mal daran versucht, funktioniert derzeit nur mit Zahlen und Buchstaben, wobei keine Umlaute umgewandelt werden.

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    ;~ #include <Array.au3>

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

    $Form1 = GUICreate("Texte verschleiern", 478, 209)
    $Input1 = GUICtrlCreateInput("", 40, 48, 385, 21)
    $Button1 = GUICtrlCreateButton("Mix", 152, 88, 153, 33, $WS_GROUP)
    $Combo1 = GUICtrlCreateCombo("A", 400, 160, 41, 25)
    GUICtrlSetData($Combo1, 'B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|' & _
    'a|b|s|d|e|f|g|h|i|jk|l|m|n|o|p|q|g|r|s|t|u|v|w|x|y|z|1|2|3|4|5|6|7|8|9|0')
    $Label1 = GUICtrlCreateLabel("Weise einer Variablen", 280, 152, 107, 17)
    $Label2 = GUICtrlCreateLabel("einen neuen Wert zu", 280, 168, 103, 17)
    $Group1 = GUICtrlCreateGroup("Combo", 272, 136, 177, 57)
    $Input2 = GUICtrlCreateInput("", 16, 160, 241, 21)
    $Label4 = GUICtrlCreateLabel("Ergebnis:", 16, 144, 48, 17)
    GUICtrlSetState($Input2, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_HIDE)
    GUICtrlSetState($Input2, $GUI_DISABLE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)

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

    Global $gA = 'A', $kA = 'a', $gB = 'B', $kB = 'b', $gC = 'C', $kC = 'c', $gD = 'D', $kD = 'd', _
    $gE = 'E', $kE = 'e', $gF = 'F', $kF = 'f', $gG = 'G', $kG = 'g', $gH = 'H', $kH = 'h', _
    $gI = 'I', $kI = 'i', $gJ = 'J', $kJ = 'j', $gK = 'K', $kK = 'k', $gL = 'L', $kL = 'l', _
    $gM = 'M', $kM = 'm', $gN = 'N', $kN = 'n', $gO = 'O', $kO = 'o', $gP = 'P', $kP = 'p', _
    $gQ = 'Q', $kQ = 'q', $gR = 'R', $kR = 'r', $gS = 'S', $kS = 's', $gT = 'T', $kT = 't', _
    $gU = 'U', $kU = 'u', $gV = 'V', $kV = 'v', $gW = 'W', $kW = 'w', $gX = 'X', $kX = 'x', _
    $gY = 'Y', $kY = 'y', $gZ = 'Z', $kZ = 'z', $1 = '1', $2 = '2', $3 = '3', $4 = '4', _
    $5 = '5', $6 = '6', $7 = '7', $8 = '8', $9 = '9', $0 = '0'

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Combo1
    _NewValue(GUICtrlRead($Combo1), InputBox('neuer Inhalt', 'Geben Sie nun den neuen ' & _
    'Inhalt der Variablen ' & GUICtrlRead($Combo1) & ' ein.'))
    Case $Button1
    If Not GUICtrlRead($Input1) = '' Then _Mix()
    EndSwitch
    WEnd

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

    Func _NewValue($Var, $nValue)
    Local $sVar
    If StringIsLower($Var) Then $sVar = 'k'
    If StringIsUpper($Var) Then $sVar = 'g'
    ;~ MsgBox(0, 'Test', Eval($sVar & $Var))
    Assign($sVar & $Var, $nValue)
    ;~ MsgBox(0, 'Test', Eval($sVar & $Var))
    EndFunc ;==>_NewValue

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

    Func _Mix()
    Local $sSplit = StringSplit(GUICtrlRead($Input1), '', 0), $i, $Type
    ;~ _ArrayDisplay($sSplit)
    For $i = 1 To $sSplit[0]
    $Type = _GetType($sSplit[$i])
    If Not @error = 1 Then
    Switch $Type
    Case 'u'
    $sSplit[$i] = Eval('g' & $sSplit[$i])
    Case 'l'
    $sSplit[$i] = Eval('k' & $sSplit[$i])
    Case 'i'
    $sSplit[$i] = Eval($sSplit[$i])
    EndSwitch
    EndIf
    Next
    ;~ _ArrayDisplay($sSplit)
    GUICtrlSetData($Input1, '')
    GUICtrlSetData($Input2, _ArrToStr($sSplit))
    GUICtrlSetState($Input2, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    EndFunc ;==>_Mix

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

    Func _GetType($Letter)
    If StringIsLower($Letter) Then
    Return 'l'
    ElseIf StringIsUpper($Letter) Then
    Return 'u'
    ElseIf StringIsInt($Letter) Then
    Return 'i'
    Else
    Return SetError(1)
    EndIf
    EndFunc ;==>_GetType

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

    Func _ArrToStr($Array)
    Local $rStr = ''
    For $i = 1 to $Array[0]
    $rStr &= $Array[$i]
    Next
    Return $rStr
    EndFunc

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

    LG
    Eal

  • Hilfe für ein Spiel

    • Ealendil
    • 9. März 2010 um 21:05

    Hi,

    1. ich hab keine Ahnung, inwiefern das ein Bot werden soll oder nicht...klingt allerdings so.

    2. ja man kann den Charakter in "Guild Wars" ohne Mausklick zur Truhe wandern lassen, hierfür müsstest du nach "GWCA Constants.au3" in Google suchen, um dir die nötigen Befehle etc. zu suchen.

    Zitat

    Warum ist denn Bot verboten ?


    Da dies der Community schadete, es gibt allerdings ein Bot Forum für AutoIt...einfach googeln.


    LG
    Ealendil

    Edit: Upps etwas zu spät.

  • Bild "sauber" in eine Gui einfügen

    • Ealendil
    • 20. Februar 2010 um 17:54

    Die Methode kannte ich noch nicht, danke dafür.

  • Bild "sauber" in eine Gui einfügen

    • Ealendil
    • 20. Februar 2010 um 03:39

    Hi,

    du könntest auch mit GIMP (Hier klicken) folgendes machen:

    erstelle eine neue datei mit der Breite und Höhe die dein Bild später haben soll, nebenbei öffnest du, mit "Datei öffnen", das Bild mit dem Haken und skalierst es auf die Größe und Breite, die die Datei hat, die du vorher erstellt hast.

    Nun kopierst du das skalierte Bild mittel Copy&Paste in die zuerst erstellte Datei.
    Es entsteht eine schwebende Ebene, diese verschiebst du mit dem Verschiebe-Werkzeug an die "richtige" Position. Das Fenster mit dem vorherigen Bild welches du Anfangs geöffnet hast, kannst du schließen.

    Nun klickst du mit einem Rechtsklick, im Ebenen-"Manager" (oder wie der heißt, öffnest du mit STRG+L), auf die schwebende Ebene und wählst "neue Ebene". Nun kannst, du, wenn dein Haken einfärbig ist, mit dem Zauberstab-Werkzeug auf deinen Haken klicken.

    Es sollte theoretisch eine Auswahl um deinen Haken erscheinen, sollte dies nicht der Fall sein, dann musst du das Pfade-Werkzeug oder das freie-Auswahl-Werkzeug nehmen und per Hand eine Auswahl um deinen Haken ziehen.

    Danach wieder mit Rechtsklick auf die neue Ebene und "Ebenenmaske hinzufügen". Es taucht ein neues Fenster auf, bei dem du "Schwarz (volle Tranzparenz)" auswählst. Dann "Hinzufügen".

    Dein Haken sollte nun verschwunden sein, die Auswahl allerdings noch zu sehen sein.
    Nun wählst du den Pinsel, mit der Farbe Weiß aus, die Farbe musst du zuerst auswählen, mit dieseml fährst du wie wild, mit gedrückter linker Maustaste, durch die Auswahl. Dein Haken sollte nun wieder langsam langsam auftauchen. Wenn der gesamte Haken wieder zu sehen ist, dann Rechtsklick auf einen Teil des Bildes auf das Menü "Auswahl", dann auf "nichts auswählen".
    Nun auf die Ebene einen Rechtsklick, dann auf "Ebenenmaske anwenden".
    Im Ebenen-Manager nun ein Linksklick auf das Augensymbol, des Hintergrunds. Der Hintergrund sollte nun aus vielen hellen und dunklen grauen Rechtecken bestehen und dein Haken irgendwo dazwischen, sozusagen.

    Zu guter Letzt das Bild als ".png" abspeichern und mittels "_GDIPlus"-Befehlen in AutoIt darstellen.

    Viel Erfolg.

    Im Prinzip genau das was chip gesagt hat:

    Zitat

    Du musst das Bild das du einfügen willst selbst mit transparentem Hintergrund erstellen

    Kannst dir zusätzlich noch dieses Video anschauen: Klick mich

    LG
    Ealendil

    PS: oder aber du schickst mir das Bild und ich mach das mal schnell.

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Bilder

    • Haken.png
      • 1,32 kB
      • 85 × 61
  • _MaxEx.au3

    • Ealendil
    • 18. Februar 2010 um 21:08

    Hi,

    teh_hahn:

    Danke für deine Mühe mir das zu erklären.

    Nun ich habe die Func() deswegen reingestellt, und verändert um zu lernen, Fehler zu begehen, diese auzubessern um daraus zu lernen (hab ich irgendwo schonmal gelesen), um mich dadurch zu verbessern.

    Es stimmt das schon das ich die Func() auf ein Minimum konzentrieren könnte, doch dann müsste ich eine schon bereits geschriebene UDF verwenden, dass tue ich auch immer wieder, doch wenn ich lernen möchte, wie es hierbei der Fall ist,
    dann verwende ich nur Standardfunktionen.

    Gut fand ich deinen vorletzten Satz, dadurch wird einiges schlüssiger...Ich hab meine Signatur nun verändert.

    Die Func() habe ich deswegen UDF genannt, da unter UDF eigtl. alles fällt was von einem Benutzer mittels Func ....() #Befehle# EndFunc geschrieben wird, dass es vlt. nicht produktiv ist, hab ich nie behauptet, hast du glaub ich, aber auch nicht gesagt.
    Soviel mal dazu.

    Das ich $array[0] = Anzahl der Elemente, hab ich deswegen gemacht, falls mal jmd. in Verlegenheit kommt und die Func() nutzt, dass er/sie nicht UBound() die Größe abfragen muss.

    Bzgl. Quellcode: lösch mal alle Kommentare und unnötigen Zeilenabstände weg, im Endeffekt bleiben 46 Zeilen Code (nur die Func alleine übrig). Vergleich _ArraySort+ mit verwendeter Funcs() (bei _ArraySort) knapp 132 Zeilen.

    Inwiefern fehlt der Funktion noch die Eindeutigkeit?

    Ich wollte damit nur zeigen, wie man "Zahlen"-Arrays sortieren, die größte/kleinste Zahl in einem Array herausfindet, deswegen dann auch die ganzen Kommentare dazu.
    Im Endeffekt ein Beispiel, obwohl es auch besser geht...bin noch Anfänger.

    LG

    Ealendil

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™