Laden...
A
apid0x
myCSharp.de - Member
23
Themen
110
Beiträge
Letzte Aktivität
vor 15 Tagen
Dabei seit
11.04.2007
Alter
50
Herkunft
Österreich
Erstellt vor 15 Jahren

Hallo Leute,

Ich habe zwei Stringarrays von gleicher Größe, ist es möglich mit diesen ein Hashtable zu befüllen? (CopyTo?)

Theoretisch könnte ich mir das so vorstellen:

Hashtable:
StringArrayA[0] <-> StringArrayB[0]
StringArrayA[1] <-> StringArrayB[1]
StringArrayA[2] <-> StringArrayB[2]
StringArrayA[3] <-> StringArrayB[3]

Liebe Grüße,
apid0x

Erstellt vor 16 Jahren

Hallo Leute,

Ich verwende die SmartIRC4Net DLL um mich mit einem IRC Netzwerk zu verbinden. Das Problem ist dass die Library nur dann funktioniert wenn man irc.Listen() verwendet. Diese Methode legt aber das ganze Programm lahm weil sie konstant irgendwas checkt. Ich habe mir gedacht das könnte man mit Threading lösen. (also einfach diese Methode in einen Thread rein). Das hat so weit funktioniert nur möchte ich auch auf die Form zugreifen. Dann kommt aber eine Exception die mir sagt:

Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement textBox3 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.

Wie kann ich realisieren das die Listen() Methode funktioniert und ich trotzdem noch auf meine Form zugreifen (lesen/schreiben etc..) kann? 🙂

Lg apid0x

Erstellt vor 16 Jahren

Okay ich habe mir mal deinen Rat zu Herzen genommen und versucht eine Schleife zu programmieren.

              while(!ParentNodeID.Contains("00000000-0000-0000-0000-000000000000"))
                                {
                                        Regex NextNode = new Regex(";" + ParentNodeID + ".*?;.*DEU=(.*?);.*?ParentNodeID=(.*?);", RegexOptions.Singleline);
                                        Match x = NextNode.Match(Menu[i].ToString());
                                        ParentNodeID = x.Groups[2].Value;
                                        MessageBox.Show(ParentNodeID); // Debug: ParentNodeID
                                        ParentNodeID = ParentNodeID.Replace("[", "\\["); 
                                        MessageBox.Show(x.Groups[1].Value); // Debug: Name
  
                                    
                                }

Das einzige Problem was ich jetzt noch zu haben scheine ist das irgendwas mit der Regex nicht stimmt. Ich habe sie schon mit dem Regex-Lab gecheckt und dort geht sie aber leider bin ich im Programm immer in einer Endlosschleife gefangen da immer die gleiche ParentID wie vorher zurückkommt.

Erstellt vor 16 Jahren

Das Problem ist das ich im Grunde eine Art Rekursion erzeugen muss. Ich verwende für die neue Regex den Wert der alten. Und das ganze so lange bis die ParentID (dich ich immer weiter gebe) nur noch 000000000 ist.

Das habe ich versucht:

      recursion:
                                    {
                                        Regex NextNode = new Regex("{.*?;" + ParentNodeID + ".*?;Name=(.*?);.*?ParentNodeID=(.*?);");
                                        Match x = NextNode.Match(Menu[i].ToString());
                                        ParentNodeID = x.Groups[2].Value;
                                        MenusFound.Add(x.Groups[1].Value);
                                        if (ParentNodeID.Contains("00000000-0000-0000-0000-000000000000") == true)
                                        {

                                        }
                                        else
                                        {
                                            goto recursion;
                                        }
                                    }

So sieht eine Menüdefinition aus:

{ MenuItem       ;[{8AC7917D-2C91-457D-80D6-A24B42F71AE7}] ;Name=Chart of Accounts;
                                                                CaptionML=[DEU=Kontenplan;
                                                                           ENU=Chart of Accounts];
                                                                MemberOfMenu=[{F8D2429D-034B-4C58-9B5E-81BE962DB1BC}];
                                                                RunObjectType=Form;
                                                                RunObjectID=16;
                                                                ParentNodeID=[{B12180CF-0EFB-43AD-9118-7765E953AAFD}];
Erstellt vor 16 Jahren

Hey herbivore,

Die Regex ändert sich ja dadurch das die neue ParentNodeID eingesetzt wird, daher werde ich kaum NextMatch verwenden können - oder? 🙂

Könnte ich dass mit "goto" erreichen?

Gruss,
apid0x

Erstellt vor 16 Jahren

Hallo Leute,

Ich schreibe derzeit ein Programm um Menüeinträge zu ihren Parent-Einträgen zurückzuverfolgen. Es gibt eine ParentID die ich immer per Regex rausfinde und dann die nächste Menügroup mit der ID finde. Wenn diese Group auch einen Parent hat möchte ich wieder, durch den schon angelegten Regex, die ID rausfinden und das gleiche noch mal machen. Dies möchte ich so lange machen bis die ParentID nur aus nullen besteht. Dabei möchte ich immer den Namen des Menüs abspeichern.

Am Ende soll das dann so aussehen:

Hauptmenü -> Bearbeiten -> Einfügen

Daher möchte ich diese Regex so lange ausführen bis ich 0000 bekomme.

Regex MenuRegex = new Regex("{.*?;" + ParentNodeID + ".*;Name=(.*?);.*?ParentNodeID=(.*?);");

Group 1 wäre hier der Name, Group 2 die ParentNodeID die dann wieder in die nächste Regex eingesetzt wird.

Habt ihr ne Ahnung wie man eine solche Schleife programmieren kann?

Erstellt vor 16 Jahren

Hallo allerseits,

Ich habe ein Problem mit einem String der zwischen zwei Wörtern massenweise Leerzeichen hat (mindestens 20). Ich möchte diese entfernen, wie kann ich das anstellen? Ich versuchte es schon sie mit Regex zu ersetzten aber das ging nicht.

Danke im Vorraus!

Erstellt vor 16 Jahren

herbivore, hab ich dir schon mal gesagt wie genial du bist? ^^

Danke, hast mir das Leben gerettet! 👍

Erstellt vor 16 Jahren

Hey Leute,

Danke für die schnellen Antworten. Ich habe hier eine Grafik auf der ich das ganze mal veranschaulicht habe. Die mit markierten Stringteile brauche ich. Eigentlich ist das ganze nur dann mit Hochkommas wenn ein Sonderzeichen in dem Namen vorkommt.

z.B

"Man. Nam.".Field oder Man."Field Nam."

Hoffe ihr könnt mir da weiter helfen, bin derzeit etwas aufgeschmissen ^^

Lg
api

Erstellt vor 16 Jahren

Das Problem ist das der String nicht immer gleich ist, daher ist Split wohl nicht das richtige da ich den Index des richtigen wertes im Array nicht herausfinden kann 😉

10 von 110 Beiträgen