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
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
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.
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}];
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
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?
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!
herbivore, hab ich dir schon mal gesagt wie genial du bist? ^^
Danke, hast mir das Leben gerettet! 👍
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
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 😉
Guten Tag,
Ich habe derzeit ein, im Grunde leichtes, Problem mit einer Filterfunktion.
Ich möchte eine Funktion schreiben die einen String bearbeitet und zwei Werte, wenn vorhanden zurückgibt.
Es gibt vier mögliche Arten des Strings:
"Nav. Tbl. Rel.".Vendor
NavTblRel.Vendor
NavTblRel
"Nav. Tbl. Rel."
Das Problem hierbei ist jeweils den hinteren Teil des Strings (geteilt mit dem Punkt) zu seperieren. Kann mir da jemand helfen? Ich habe schon einiges Versucht aber es passieren immer Dinge wie dass z.B bei Rel." getrennt wird obwohl es gar keinen zweiten Wert gibt etc..
Übrigens habe ich es schon mit LastIndexOf('.') probiert, funktioniert leider nicht bei Variante 4 des Strings.
Danke im Voraus!
Danke Leute - die Regex Funktion an sich hat funktioniert nur gab es ein Problem mit der HTML und die wurde falsch interpretiert.
Hat sich erledigt 😉
Ihr seid die besten!
Nein das Program friert ein als wäre es in einer Endlosschleife gefangen 😐
Das Pattern habe ich schon mit herbivore's tool gecheckt und das geht 😐
Naja aber im Grunde müsste ich ja mit meinem Code das ganze Resultat einschließlich der style tags zurückbekommen oder?
Hallo Leute
Ich möchte die Team-Mitglieder eines Forums aus der Hauptseite herausfiltern
Ich möchste die Namen so herausfiltern:
style="color:#D40000"><b>SuperMod</b></a>
style="color:#006A0E"><b>Mod</b></a>
style="color:#FF6600"><b>Admin</b></a>
Ich möchte nur diese 3 Typen matchen und jeweils den Namen des Mitglieds (innerhalb der Bold-Tags) herausfinden.
Ich habe das so versucht aber das geht nicht:
WebRequest wreq = HttpWebRequest.Create("linkhier");
HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse();
StreamReader sr = new StreamReader(wresp.GetResponseStream());
string WbHtml = sr.ReadToEnd();
Regex abc = new Regex("style=\"color:#D40000\"><b>[a-zA-Z0-9]*</b></a>");
MatchCollection nuxd = abc.Matches(WbHtml);
string res = "";
foreach (Match duxi in nuxd)
{
res += duxi.Value;
}
MessageBox.Show(res);
Hört sich gut an - werd ich mir mal ansehen 😉
Schaut genial aus - werde das mal testen und anschliessend hier posten. Voten werde ich natürlich auch 😉
Moin,
Ich habe mit einem meiner Programme ein kleines Problem. Ich will die Bytes einer Datei (binär) auslesen. Ich verwende dazu diese Funktion:
public static byte[] ReadFully(Stream stream)
{
byte[] buffer = new byte[32768];
using (MemoryStream ms = new MemoryStream())
{
while (true)
{
int read = stream.Read(buffer, 0, buffer.Length);
if (read <= 0)
return ms.ToArray();
ms.Write(buffer, 0, read);
}
}
}
Dies funktioniert recht gut, wenn ich aber grosse (70MB und mehr) behandle bekomme ich OutOfMemory Exceptions. Daher wollte ich fragen ob irgendwer hier ne Idee hat wie ich das verhindern könnte.
Ich hätte mir da gedacht den Vorgang zu staffeln. Ich hätte mir das so ausgedacht:
Funktion liest bis 10MB -> in ByteArray -> MemoryStream wird geleert -> Funktion liest ab 10MB bis 20MB -> ByteArray -> MemoryStream leeren.
Da ich aber keine Ahnung habe ob man das so realisieren kann wollte ich nur mal hier fragen 😉
EDIT: Nach dem genaueren Analysieren des Codes fiel mir auf das der Buffer nur auf 32768 Bytes ausgelegt ist. Daher meine Fragen:
Reverse Engineering ist doch in Deutschland legal habe ich gedacht? Wenn nicht, wären doch OpenOffice und so auch alle illegal, weil sie DOC speichern können.
Viele Firmen untersagen das Reverse Engineering ihrer Produkte durch entsprechende Lizenzbedingungen. Die Analyse von Protokollen ist davon rechtlich nicht betroffen, weil dabei die Software selbst gar nicht Gegenstand der Untersuchung ist. Zudem sind solche Lizenzklauseln in vielen Ländern generell ungültig, da den Nutzern einer Sache gesetzlich das Recht zusteht, zur Überprüfung der Anwendungssicherheit (siehe auch Trojanisches Pferd) oder zur Fehlerbehebung ein von ihnen erworbenes Softwareprodukt einem Reverse Engineering zu unterziehen
Soweit ich weiss liegt das in der Hand der herstellenden Firma. Kommt aber wie man weiter unten lesen kann auch auf die Rechtssituation an. Ich weiss nicht wie das in Deutschland ist, wenn ich da nicht falsch informiert bin ist es aber in Österreich verboten (bzw. in der Hand der herstellenden Firma).
Danke egrath, Ihre Lösung hat geholfen. Ich habe die zu verschlüsselnden Daten direkt an das byte[] Argument der Encrypt Funktion abgegeben und bei der Entschlüsselung DecryptToBytes verwendet.
Mit freundlichen Grüssen.
P.S: Danke übrigens auch an blackcoin!
Okay das funktioniert so weit. Das Problem ist nur wie bekomme ich bei Decrypt den String in ein Bytearray zurück das sich dann schreiben lässt?
Übrigens danke für Ihre Geduld 😁
Wenn der Aufbau der Dateien nicht offensichtlich (also Plaintext) bzw. von TI freigegeben wurde und entschlüsseln werden muss gilt das als Reverse Engineering und ist illegal.
Reverse Engineering (engl., bedeutet: umgekehrt entwickeln, rekonstruieren, Kürzel: RE) bezeichnet den Vorgang, aus einem bestehenden, fertigen System oder einem meistens industriell gefertigten Produkt durch Untersuchung der Strukturen, Zustände und Verhaltensweisen, die Konstruktionselemente zu extrahieren.
Liebe Grüsse
Wünsche euch allen frohe Feiertage 🙂
Beim Lesen der Binärdaten liegts ja nicht richt wirklich.
Sagen wir mal ich habe ein ByteArray byteArr vor mir. Ich habe jetzt keine Ahnung wie ich das an
public string Encrypt(byte[] plainTextBytes)
abgebe und den Crypttext (also die verschlüsselten Binärdaten) wieder an
public string Decrypt(byte[] cipherTextBytes)
Abgebe und die in eine Datei schreibe so das sie auch noch funktioniert :S
Frohe Weihnachten & Liebe Grüsse!
Guten Morgen,
Ich habe ein Problem bei der Verschlüsselung und anschließenden Entschlüsselung von Binärdaten.
Ich verwende die RijndaelEnhanced Klasse (http://www.obviex.com/samples/EncryptionWithSalt.aspx)
Und zwar die Funktion der Klasse:
RijndaelEnhanced(string passPhrase,
string initVector)
Das Problem ist das ich Binärdaten verschlüsseln möchte. Ich habe aber keine Ahnung wie ich diese aus einer z.B Bilddatei lesen kann - verschlüsseln/entschlüsseln kann.
Kann mir da jemand helfen? Mein großes Problem ist dass ich nicht verstehe wie ich mit den Binärdaten verfahren muss.
Ich will die Binärdaten lesen, verschlüsseln/entschlüsseln und anschließend schreiben können.
Liebe Grüsse
Ja das weiss ich auch, ist nur für ein Schulprojekt - soll nix sicheres sein 🙂
Danke mal für die Antworten.
@Bernd: Ich hab dann aber schon mehr Buchstaben - ich möchte nämlich so ne Art Verschlüsselungsprogramm bauen dass das ABC mit meinem eigenen ABC ersetzt und wieder zurückübersetzt.
@herbi: Gäbs da auch ne andere Lösung als RegEx? Bin da nich so bewandert...
edit:
Hab mal das probiert - aus verschiedenen Tutorialanweisungen zusammengebastelt, nicht lachen - wiegesagt bin kein Regex-Genie 😜
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace vZa
{
class Program
{
public static string ReplaceMethode(Match m)
{
switch (m.Value)
{
case "a":
return "b";
break;
case "b":
return "a";
break;
default:
return "";
break;
}
}
static void Main(string[] args)
{
MatchEvaluator myEvaluator = new MatchEvaluator(ReplaceMethode);
string ersetzterString = Regex.Replace("abcdef", "-*.*", myEvaluator, RegexOptions.IgnoreCase);
Console.WriteLine(ersetzterString);
Console.ReadLine();
}
}
}
Moin Leute,
Ich versuche seit einiger Zeit mit Textstrings zu arbeiten. Ich möchte gewisse Buchstaben in einem String ersetzen.
Das Problem ist dass wenn ich z.B
Da die A's ja in C's umgewandelt werden werden diese dann in X umgewandelt was ich verhindern möchte.
Weil dann wärs ja unlogisch wenn A -> C -> X
Kann ich das irgendwie so schreiben dass alle gleichzeitig ersetzt werden und nicht schon mal bearbeitete noch mal bearbeitet werden?!
Lg!
Original von roeb
dualscreen 🙂
Da hast du sowieso schon so nen riesigen Monitor und dann machste noch nen zweiten dran tztztz..... neid 😁
is der Tisch nich n bisschen klein für den PC? 😁 😁
Meiner Meinung nach wäre ein MySQL Server schwachsinning da das dann wieder Platformabhängig ist und einen bereits installierten MySQL Server + die Konfiguration benötigt. Access ist für diese Zwecke perfekt geeignet.
LOL 😁 😁
Hatten wir nich nen Witzethread?
Original von dechavue
Hi,Wenn es dir nur um das Verdunkeln geht und nicht um das Einfrieren des Hintergrunds, wäre es auch möglich, eine Form (borderstyle = none) mit BackColor=Black über den Bildschirm zu legen und (für den Fade - Effekt mit einem Timer) die Opacity Eigenschaft zu verändern.
mfg dechavue
Edit: tja die Rechtschreibung
Ich glaub mit einfrieren meint er eher dass man nichts drauf anklicken kann was in diesem Falle sowieso gewährleistet wäre weil man ja durch die Form nix klicken kann 😉
Er müsste dann halt nur schauen das der Focus auf der Mainform bleibt dann hat er ihn schon eingefroren 😉
Also aus meinen VB Zeiten kann ich mich errinern das man mit einer API den Focus eines Fensters setzen kann (wenn nich auch ohne API) - müsste in C# eig. auch gehen 😉
api
Hab mir schon gedacht dass es sowas in der Art ist, Festplatte wird defekt sein.
Einfach mal zum Händler bringen vielleicht gibts noch Garantie oder sowas (wenn ihr noch die Rechnung habt.)
api
Nur so zur info.. der thread is nen monat alt 😁
P.S: Schöne Seiten
Original von winSharp93
Da ich meinen Schreibtisch sowieso gerade einigermaßen aufgeräumt habe 🙂 , hier auch mal ein Bild davon:
schaut nice aus, nur so ma als anmerkung bei so grossen icons würd mir schlecht werden, hehe 8o
edit: sorry für den megabump habs grad erst bemerkt 🙁
sieht aus als wär die Platte defekt... was ihr versuchen könntet ist die Platte ausbauen und ne andere einbauen und dann schauen obs geht 😉
api
Ne ich hab meinen nicknamen von der/dem lieben herbivore ändern lassen. Und ne ich heiss jetzt nich Apid0 X.
Lg,
Sebastian
Also wenn ich da was anklicke kommt nen neues Bild oder macht sich da ne Art submenü auf? 🤔
Irgendwie versteh ich das nich ganz... du hast nen Menü am Desktop?
Ja hab meinen Namen geändert. Mein Name kommt von API (z.B in VB) und Documents (docs hab ich umgewandelt zu dox) und um das ganze zu verl337en hab ich aus dem o ne null gemacht daraus entstand:
apid0x
Original von B3nj
😄hier mein schön überfülltes desktop
Ach du meine.... wie schafft man es seinen Desktop so vollzubekommen 🤔 😁
Also meiner kommt daher dass ich Sebastian und mit Nachnamen K. heiße 😉
Also so ordentlich wie das Programm aufgemacht ist, da kann der Code eigentlich nur gut sein 👍
Ich persönlich finde das Programm sehr nett und auch hilfreich. Wirst du das Programm auf OpenSource Basis laufen lassen oder den Source nicht releasen?
Also ich hör beim Programmieren eigentlich gar keine Musik. Sonst hört ich eigentlich so alles von Country bis Alternative. Also ich zum Beispiel könnte mir nie vorstellen Metal oder sowas beim Programmieren zu hören denn wenn mir 5-10x annähernd das Trommelfell platzt und mir permanent wer ins Ohr brüllt dann kann ich mich weder konzentrieren noch hab ich Lust zum programmieren. Naja jeder hat ja seinen eigenen Geschmack.
Liebe Grüsse,
Sebastian
Also ich finde die Komponente echt super! Werd sicher Verwendung dafür finden 😁
ich werde die nested class dann mal private machen. Ist die trotzdem so noch verwendbar wie in meinem Beispiel.
edit: ich depp - kann man nicht auf die class kann dann nur eine methode von BertStruct zugreifen ich natürlich nicht, sagt schon der name private..
P.S: Danke fürs topicfix 🙂 👍