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

Beiträge von borsTiHD

  • 2D Array - Doppelte Beziehungen bestimmter Spalten in einem Array ermitteln und löschen

    • borsTiHD
    • 22. April 2018 um 21:22
    Zitat von Yjuq

    Mir ist gerade aufgefallen, dass ich noch'n kleinen Bug drin hab. Folgende Daten werden ebenfalls als doppelte Einträge erkannt:

    Haus A Haustür A Straße Haus B Haustür B
    aaa 1 222 xyz 2
    aaa 1 222 def 1

    Meine Abfrage in der quickCheckRelaion() behandelt dieses Fallbeispiel nicht, wenn Einträge (Haus, Haustür und Straße) zwar zu 100% übereinstimmen, aber die Relation zwischen den anderen Daten unterschiedlich ist.

    Das wäre nicht schlimm. Die Haustür eines Hauses ist fest mit einem anderen Haus Verknüpft, es kann aber passieren dass zwei gleiche Häuser über zwei unterschiedliche Strecken verbunden sind.

    Die Straßen können auch doppelt vorkommen, solange es unterschiedliche Häuser sind (haben dann zwar den gleichen Straßenname, aber es ist eine andere Straße).

    Allerdings kann bei dem selben Haus keine Straße doppelt vorkommen. Also ein und dasselbe Haus kann eine Straße nur einmalig belegen.

    Will damit sagen, das Haus "abc" ist einzigartig, kann aber als "Haus A" als auch als "Haus B" vorkommen (kommt immer drauf an, welches Haus den Event gesendet hat, dieses ist dann Haus A),

    Das Haus "abc" kann mehrere Haustüre besitzen.

    Jede Haustür kann nur zu "einem" anderen Haus führen.

    Das Haus "abc" kann aber mit merheren Haustüren unterschiedliche andere Häuser erreichen (aber immer noch pro Haustür nur ein anderes Haus).

    Die einzelnen Straßen von Haus "abc" tragen immer einen anderen Namen.

    Das Beispiel von dir kann daher nicht auftreten, da dort das selbe Haus "aaa" mit der selben Haustür "1" zu unterschiedlichen Häusern käme.

    Den Fall gibt es nicht.

    Ich glaube ich muss die Regeln vlt nochmal irgendwie sammeln und übersichtlicher gestalten, da es ganz schön durcheinander geschrieben wurde von mir (sorry dafür). :/

    Vielen Dank nochmal das du dir so viel Mühe machst. :)

    Das mit dem Exit Loop ist jetzt auch mit drin, das ist einfach aber super. :D

  • 2D Array - Doppelte Beziehungen bestimmter Spalten in einem Array ermitteln und löschen

    • borsTiHD
    • 22. April 2018 um 08:05

    Morgen, bin grad erst aufgestanden. :)

    Vielen vielen Dank erstmal für den Lösungsansatz.

    Hab den mir grad im halbschlaf durchgelesen und werde das mal versuchen umzusetzen. :D

    Die Daten selbst bekomme ich leider nicht aus einer Datenbank, sondern vielmehr aus einer Eventliste, in der ich lediglich die Zeilen markieren und kopieren kann.

    Wenn man eine solche Zeile eines Events kopiert, erhält man zudem die Spalten Namen in die ersten Zeile.

    Was sich dann im Clipboard befindet lese ich mit "$aClipBoard = _StringSplit2D($sString)" in ein Array.


    Deswegen kann ich das Problem leider nicht umgehen um es in dem jeweiligen Ursprungsort vorher zu filtern. :(

    Und ich denke man kann es erkennen, es sind Beziehungen zws. Netzelementen, aber da kann ich leider nicht mehr zu sagen.


    //€dit:

    Habs gerade mal umgesetzt und auf dem ersten Blick und in einem kleinen Test scheint es perfekt so zu klappen. :D

    Ich muss mir da aber noch paar ConsoleWrites einbauen, damit ich in Zukunft es schneller nachvollziehen kann.

    Aber verstehe ich die Logik richtig, dass du alle Beziehungen checkst... Immer von Zeile 1 mit den restlichen, danach Zeile 2 mit den restlichen (also quasi immer nach unten).

    Wenn eine Zeile davon doppelt erkannt wird, wird die gerade zu prüfende Zeile als true makiert und egal ob die anderen Zeilen nicht doppelt (false) sind, der $check bleibt für diese eine zu prüfende Zeile immer true (wegen $check = true Or false).

    Sobald alle Zeilen geprüft wurden (sagen wir mal für Zeile 1), und mindestens eine Beziehung gefunden wurde (also $check = true), dann wird die Zeile einfach übersprungen.

    Irgendwann befindet sich die Schleife an dem Punkt wo die "letzte doppelte" Beziehung für Zeile 1 gefunden wurde (zb. Zeile 9). Dort bleibt $check = false und nur dann wird die Zeile in das neue Array geschrieben.

    Also hab ich quasi immer die letzte Zeile aller doppelten Beziehungen im Array?

    Hab ich das so richtig nachvollziehen können? :)

    Ich werde das die Tage mal ausführlicher testen und danke dir tausendfach dafür. :D

  • 2D Array - Doppelte Beziehungen bestimmter Spalten in einem Array ermitteln und löschen

    • borsTiHD
    • 21. April 2018 um 22:36

    Hallo zusammen,

    ich hoffe ihr könnt mir weiterhelfen.

    Aus einem Excel ähnlichen Format erstelle ich mir ein 2D Array.

    In diesem 2D Array würde ich gerne doppelte Einträge löschen, allerdings nicht einfach wenn ein Wert doppelt vorkommt, sondern vielmehr wenn eine Beziehung einer Zeile zwischen bsp. zwei Spalten mehrfach im gesamten 2D Array vorkommt.

    Ich habe jetzt schon vieles probiert, "_ArrayUnique", oder mein Array durchschleifen und dabei einzelne Spalten gesondert speichern und pro Durchgang prüfen ob Beide vorhanden sind, aber irgendwie bekomme ich die Programmlogik für eine Beziehung der Spalten nicht sauber hin.

    Darum wollte ich euch bitten, mir bei diesem Problem zu helfen.

    Um mal zu zeigen in welchem Format mein Array besteht, habe ich folgendes beispiel:

    Haus A Haustür A Straße Haus B Haustür B
    abc 1
    333
    def
    1
    def 1 333 abc 1
    def 2 444 abc 2
    abc 3 555 ghi 1
    jkl 1 333 xyz 3
    ghi 1 555 abc 3

    Die rot gefärbten Zeilen 2 und 6 wären in diesem Fall doppelte Beziehungen, die ich gerne jeweils rauslöschen würde.

    Die Beziehung selbst soll zws. "Haus A" und "Haus B" bestehen, aber es muss auch drauf geachtet werden, falls "Haus A" = "Haus B" doppelt ist, das die verschiedenen Straßen beachtet werden, welche einzigartig pro gleicher Beziehung zws Haus A und Haus B sind (Beispiel Zeile 1, 2 und 3 - während Zeile 2 eine doppelte Beziehung zu Zeile 1 ist, ist Zeile 3 eine neue Beziehung, wegen einer anderen Straße). Straßen hingegen können doppelt vorkommen, solange sie nicht innerhalb der gleichen Beziehung zws. Haus A und Haus B ist.

    Bei allem kann ein Wert aus Haus A öfters, oder sogar unter der Spalte Haus B vorkommen, die Bezeichnung eines Hauses ist aber einzigartig.

    Großes Problem und ich zerbreche mir hier sehr den Kopf.

    Hätte jemand Ideen für und kann mir bitte weiterhelfen?

    Vielen Dank schon mal.

    Grüße

    borsTiHD

  • SciTE - Toggle Folding #Region

    • borsTiHD
    • 21. April 2018 um 14:24

    Ok schade, bei mir wirkt das irgendwie nicht so. :|

    Danke für die Antwort. :)

  • SciTE - Toggle Folding #Region

    • borsTiHD
    • 21. April 2018 um 10:48
    Zitat von BugFix

    Grundsätzlich gilt:
    • SciTEUser.properties öffnen
    • freie command-Nr raussuchen (bei aktueller SciTE-Version steht dann dort z.B. "command.name.33.$(au3)="
    • wenn du selbst noch keine Einträge erstellt hast kannst du auf jeden Fall die Nummern 36 bis 49 verwenden

    So ist der Aufbau der Einträge:

    Code
    command.name.35.*.au3=OrganizeIncludes    <== Name, erscheint unter Extras
    command.35.*.au3="$(autoit3dir)\autoit3.exe" "$(SciteDefaultHome)\OrganizeIncludes\OI_1.0.0.50.au3"    <== Befehl der ausgeführt wird
    command.save.before.35.*.au3=1     <== Speichern vor Ausführen, nur wenn erforderlich
    command.shortcut.35.*.au3=Ctrl+Shift+Alt+I     <== der Hotkey

    Der verwendete Befehl kann sein:
    • Aufruf einer EXE (mit/ohne Parameter), somit auch AU3-Skripte als Param der autoit3.exe
    • Aufruf von Lua-Skripten ( dofile )
    • Ausfüren von Lua-Code direkt ( dostring )

    Bezüglich "Toggle All Folds": Ich werde das Bsp. in eine Funktion integrieren, die differenzierte Regionen (#Region, Function, Comment-Block, etc.) oder alle Foldings betrifft. Hab noch etwas Geduld. ;)

    Alles anzeigen

    Hi zusammen,

    ich weiß der Thread ist etwas älter, aber hätte eine Frage zu dem obigen Beispiel.

    Das toggeln der Regionen find ich klasse und hab das jetzt auch für Funktionen erstellt (siehe unten).

    Schade finde ich aber, das es wirklich einfach toggeld... sprich wenn was ausgeklappt ist, wirds eingeklappt und umgekehrt, entsprechend dem Status vorher.

    Gibt es eine Möglichkeit dem Script beizubringen, das egal in welchem Zustand es sich gerade befindet, eingeklappt und bei erneutem druck wieder ausgeklappt wird?

    Ich hätte es gerne so, das alles zusammen ein-, oder ausgeklappt wird. :D

    Vielen Dank schon mal.

    Code
    # 40 Un/Fold #Region
    command.name.40.$(au3)=Toggle Fold #Func
    command.40.*.au3=dostring local text = editor:GetText() tReg = {} pos, iEnd = text:find('[Ff][Uu][Nn][Cc]') \
    if pos ~= nil then table.insert(tReg, pos) while true do \
    pos, iEnd = text:find('[Ee][Nn][Dd][Ff][Uu][Nn][Cc]', iEnd) \
    if pos == nil then break end table.insert(tReg, pos) end \
    for i=1, #tReg do editor:GotoPos(tReg[i]) editor.CurrentPos = tReg[i] \
    scite.MenuCommand(IDM_EXPAND) end end
    command.mode.40.*=subsystem:lua
    command.shortcut.40.*.au3=Ctrl+Alt+F
  • Tutorial: Wie man Script-Fehler erfolgreich sucht/findet bzw. richtig debuggt

    • borsTiHD
    • 12. August 2017 um 23:55

    Haha, dein Beitrag ist zwar schon älter, aber finde die Möglichkeiten klasse. :D
    Ich habe selbst bisher meine Variablen immer über eine einfache MsgBox ausgeben lassen wenn ich mal nicht weiter wusste, oder wissen wollte welchen Wert ich gerade in meiner "$xy" habe.
    Habe hier noch einiges dazu gelernt, Danke. :thumbup:

  • StringSplit in ein 2D Array?

    • borsTiHD
    • 12. August 2017 um 23:32

    Oh sorry, achte ich drauf. ^^
    Antworte nur fix, weil ich mir gut vorstellen kann das es euch nervt die Leute immer wieder dran zu erinnern. :/

  • StringSplit in ein 2D Array?

    • borsTiHD
    • 12. August 2017 um 21:30

    Klappt perfekt. :D
    Ich hab mir mal den ganzen verlinkten Thread von euch durchgelesen.
    Konnte die Funktion meinen Bedürfnissen noch anpassen (anstelle der Kommatrennung, eine Trennung durch @TAB) und es macht genau das was ich mir wünsche. :)
    Danke euch Beiden für die schnelle Hilfe. :thumbup:

  • StringSplit in ein 2D Array?

    • borsTiHD
    • 12. August 2017 um 21:09
    Zitat von alpines

    Es wäre gut, wenn du uns beim nächsten Mal verrätst welchen Fehler dir der AutoIt-Interpreter ausspuckt, ansonsten können wir nur raten.

    Ups. :D
    Ehm ja... das wäre natürlich wirklich hilfreich gewesen.
    Beim nächsten mal. :)
    Vielen Dank, werde mal weiter probieren.


    Zitat von Oscar

    Das Thema hatten wir vor kurzem erst: 1D Array in 2D Array splitten
    Von AspirinJunkie stammt die Funktion "_StringSplit2D". Die ist sehr universell einsetzbar, um einen String in Zeilen/Spalten aufzusplitten (Ergebnis 2D-Array).


    Dir auch vielen Dank.
    Werde die Funktion mal ausprobieren. :)

  • StringSplit in ein 2D Array?

    • borsTiHD
    • 12. August 2017 um 18:02

    Hallo zusammen,

    ich bin derzeit an 2 dimensionale Arrays gekommen und blicke nicht mehr durch.
    Mein Kopf raucht und ich hoffe ihr könnt mir auf die Sprünge helfen. :D

    Ich probiere egt was recht simples.
    Es existiert ein Text, der aus Zeilen und Spalten besteht, den würde ich gerne in ein Array ablegen.

    Mit "StringSplit" kann ich erfolgreich meine Zeilen in ein Array speichern, oder meine Spalten (die sind über ein @TAB getrennt).
    Einzeln bekomme ich das ganze hin, aber nicht kombiniert in einem 2D Array.
    Könnt ihr mir da weiterhelfen?

    Ziel später wird es sein das ich alle Zahlen einer bestimmten Spalte zusammenrechnen kann.

    Vielen Dank schonmal. :)

    mfg

    AutoIt
    $Zwischenablage = ClipGet()
       $ArrayZeile = StringSplit($Zwischenablage, @LF)
    
    
    ;~    _ArrayDisplay($ArrayZeile)
    
    
       If Not @error Then
    	  For $i = 1 To $ArrayZeile[0]
    		 $ArraySpalte = StringSplit($ArrayZeile[$i], @TAB)
    
    
    		 For $s = 1 to $ArraySpalte[0]
    			   $Array2D[$i][$s] = $ArraySpalte[$s]
    		 Next
    	  Next
       EndIf
    
    
       _ArrayDisplay($Array2D)
    Alles anzeigen
  • Wochentag- Feiertagsermittlung

    • borsTiHD
    • 2. Mai 2017 um 15:09

    Wollte nur ein kurzes Feedback geben.
    Ich nutze deine _DateToNameWeekDayGER Funktion und bin sehr zufrieden damit. ^^

    Tausend Dank für deine Mühen. :thumbup:

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™