Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von T-Man
Thema: Regex auf riesige Texte
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Nur noch parsen: Genau das ist es ja, das Parsen. Im .net Framework ist so ein Parser drin. Wenn ich den Code umschreiben könnte, so dass er auch auf einem Stream funktioniert, dann hätte ich genau das, was ich benötige...
Ich schätze, den .net Code darf ich mir zwar ansehen, aber wohl kaum modifiziert verwenden...

T-Man

Thema: Regex auf riesige Texte
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Freien regex Code, den ich anpassen und benutzen könnte gibt es wahrscheinlich nicht!? Ich könnte ja mal Bill fragen, ob ich die Regex von .net erweitern darf ;-)

Thema: Regex auf riesige Texte
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Moin!

Ich möchte jede beliebige Regex anwenden können.
Es geht um ein DMS. Die Leute sollen beliebige Dateien reinschmeissen können. Aus denen wird der Text extrahiert. Später soll man die Möglichkeit haben mit beliebigen Regex nach Texten zu suchen.
Der Normaluser wird nur nach worten suchen, weil er Regex nicht kann. Für den bräuchte ich also keine Regex. Mir geht es aber um den Poweruser, der Regex versteht und es auch beliebig anwenden können soll.
Der Poweruser kann dann auch für den Normaluser komplexe Suchabfragen erstellen, die der dann anwenden kann.
Wenn ich auf regex verzichte, muss ich auf Dauer alles mögliche an Suchmöglichkeiten hinzufügen, also viel programmieren, worauf ich gerne verzichte...

GRuß
T-Man

Thema: TypeCast wirft exception
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Sicher, dass es sich um den selben Typ handelt? Vielleicht hast Du die Klasse in zwei verschiedenen Namespaces und nutz mal den einen, mal den anderen...

Thema: Regex auf riesige Texte
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Leute,

weiß jemand von Euch, wie ich einen Regulären Ausdruck auf einen Text anwenden kann, der größer als 2 Gigabyte ist?
Die Regex Klasse unterstützt ja nur Strings als Input und die können nunmal nicht beliebig groß sein. Eine Regular Expression kann man daher nicht direkt auf einen Stream loslassen. Was mache ich aber, wenn ich eine beliebige Regex auf eine beliebig große Textdatei anwenden muß? Die Regex nur auf Teile des Textes loszulassen ist nur möglich, wenn die Regex nicht nach Textanfang oder Textende sucht...

Die Grenze 2GB ist ja auch nur die theoretische Grenze. Praktisch dürfte sie deutlich kleiner sein, da man selbst einen 1GB großen Text wohl kaum laden kann (OutOfMemoryException).
Selbst 200MB große Texte würde ich eher ungern komplett in den Speicher laden um sie zu prüfen, denn bei mehreren parallelen Anfragen würde ich irgendwann auch wieder zu einer OutOfMemoryException kommen.
Das eine Regex auf einem Stream sicher deutlich langsamer arbeiten würde ist klar, aber wer mit so riesigen Texten arbeitet, erwartet auch nicht blitzschnelle Prüfung...

Das Problem ist für mich im Moment nur theoretischer Natur, da so große Texte wohl eher selten vorkommen und viele parallele Anfragen auch nicht ganz so wahrscheinlich sind, aber wenn es eine Lösung gibt, wäre das natürlich schön...

Gruß und vielen Dank schonmal für Eure Antworten
T-Man

Thema: Mit OleDBCommand NVARCHAR(50) Spalte in MSSQL erzeugen
Am im Forum: Datentechnologien

Autsch!!!

Ich habe es.

Mein Befehl war

CREATE TABLE [mytable] ([spaltea] [nvarchar(50)], [spalteb] [int])

Das Problem waren die (unnötigen) eckigen Klammer um den Typ. Allerdings nur bei [nvarchar(50)], nicht bei [int].
Wieso auch immer stören die Eckigen klammer um int nicht, während sie um nvarchar() stören. Muss man nicht verstehen...

Gruß
T-Man

Thema: Mit OleDBCommand NVARCHAR(50) Spalte in MSSQL erzeugen
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MSSQL Express 2005

Moin!

Ich habe folgendes Problem: Wenn ich mit einem OleDbCommand eine Tabelle erzeuge, die eine Spalte des Typs NVARCHAR(50) enthält, bekomme ich eine OleDbException mit der Meldung, dass der NVARCHAR(50)-Datentyp nicht gefunden werden kann.

Mein Sql-String sieht in etwa wie folgt aus:

CREATE TABLE [meinetabelle] (spaltea nvarchar(50), spalteb int)

Ich bekomme die selbe Fehlermeldung, wenn ich einer bestehenden Tabelle eine Spalte hinzufügen möchte.

ALTER TABLE [meinetabelle] ADD [spaltec] nvarchar(50)

Mit Access funzt es wunderbar. Auch mit OdbcCommand und MySql klappt es wunderbar.

Hat jemand 'ne Idee?
Wenn ich die Befehle direkt im Sql Server Managment Studio absetze funktioniert es wunderbar.

Vielen Dank schon mal.
T-Man

Thema: Xml Element mit Präfix schreiben
Am im Forum: Datentechnologien

Zitat von norman_timo
Hallo T-Man,

sorry wenn ich mich kurz halte:
MSDN - XmlDocument.CreateElement(string, string, string)

Bitte beachten, dass man als namespace uri auch String.Empty verwenden kann.

Grüße
Norman-Timo
Danke! Mit CreateElement("w", "p", string.Empty) bekam ich das gleiche Ergebnis. Erst als ich auch noch den Namespace mit übergeben habe, klappte es.

Gruß
T-Man

Thema: Xml Element mit Präfix schreiben
Am im Forum: Datentechnologien

Moin!

Ich muss Word-Xml Dateien bearbeiten und habe dabei ein kleines Problem.

Hier ein kleines Beispiel und danach dann das Problem:


            XmlDocument doc = new XmlDocument();
            doc.Load(@"C:\Users\T-man\Documents\upload\document.xml");
            string ns = doc.DocumentElement.GetNamespaceOfPrefix("w");
            XmlNamespaceManager nsmngr = new XmlNamespaceManager(doc.NameTable);
            nsmngr.AddNamespace("w", ns);
            foreach (XmlNode sdt in doc.SelectNodes("//w:sdt[w:sdtPr/w:tag/@w:val and w:sdtContent]", nsmngr))
            {
                XmlNode tagAttr = sdt.SelectSingleNode("w:sdtPr/w:tag/@w:val", nsmngr);
                if (tagAttr != null)
                {
                    string tagVal = tagAttr.Value.ToLower();
                    if (tagVal.StartsWith("myattribute_"))
                    {
                        tagVal = tagVal.Substring(12);
                        XmlNode cont = sdt.SelectSingleNode("w:sdtContent", nsmngr);
                        if (cont != null)
                        {
                            cont.RemoveAll();
                            XmlElement p = doc.CreateElement("w:p");
                            XmlElement r = doc.CreateElement("w:r");
                            XmlElement t = doc.CreateElement("w:t");
                            XmlText v = doc.CreateTextNode(tagVal);
                            t.AppendChild(v);
                            r.AppendChild(t);
                            p.AppendChild(r);
                            cont.AppendChild(p);
                        }

                    }
                }
            }
            doc.Save(@"C:\Users\T-man\Documents\upload\document2.xml");

Der Code funktioniert fast wunderbar. Einziges Problem: Die neu geschriebenen Elemente sehen so aus:

<p>
  <r>
    <t>text</t> 
  </r>
</p>

was ich aber eigentlich haben wollte ist folgendes:

<w:p>
  <w:r>
    <w:t>text</w:t> 
  </w:r>
</w:p>

Kann mir jemand sagen, was ich tun muss, damit das Präfix mit geschrieben wird?

Vielen Dank schonmal in vorraus.
T-Man

Thema: [gelöst] Binär datei aus Datenbank beim client abspeichern?
Am im Forum: Web-Technologien

Response.BinaryWrite((byte[])dr["Daten"]);

Thema: [gelöst] Binär datei aus Datenbank beim client abspeichern?
Am im Forum: Web-Technologien

Du schickst ja gar nicht den Stream...

Wenn daten z.B. ein byte-Array ist, kannst Du mit Response.BinaryWrite(daten);
den Stream schicken.

Thema: In einem string[] alle Einträge einen nach vorne
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Array.Copy sollte gehen. Schau mal...

Thema: Kanntet ihr den ??-Operator? [null coalescing-Operator]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von 0815Coder
von der übersetzung her würde verschmelzung / vereinigung passen.

aber wie wärs mit "null-verwandlung" oder "null-transformation"? also null-transformations-operator. transformiert eine null ja auf was anderes.
Sehr schön. null-transformations-operator gefällt mir bisher am besten.

Thema: Kanntet ihr den ??-Operator? [null coalescing-Operator]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Herbivore,

mir geht es weniger um die Kürze, als vorallem darum, daß ich schon an der Definition erkenne, daß der Parameter nicht null sein darf.
Man kann IdR die Funktionsweise einer Methode an Ihrem Namen und den Namen der Parameter erraten. Das lesen der Doku kann man sich so oftmals sparen. Was aber häufig unklar ist, ist ob ein Parameter auch null sein darf. Vorallem wegen dieser Info muß ich häufig in die Doku sehen.
Ich habe z.B. Regex.IsMatch(...) zunächst intuitiv benutzt und bin davon ausgegangen, daß null wie ein Leerstring behandelt wird, was keider nicht so ist. Wären die Parameter entsprechend markiert hätte ich es gleich gesehen...

Was den Namen des ?? Operators angeht, würde ich sagen ist 'Default when null' nicht ganz so gut, das es ja nicht unbedingt ein Default-Wert ist den man da als zweites Argument angibt.

Vielleicht "Other when null" (kurz "own" für Akronymphile)?

Das "Not Null" nicht gut ist, ist mir klar, aber den habe ich mir auch nicht bewußt überlegt, der ist einfach in meinem Kopf entstanden und benutze ihn auch nicht wenn ich mit anderen kommuniziere.

Thema: Kanntet ihr den ??-Operator? [null coalescing-Operator]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von marco.b
Also nennt sich ternärer Operator.
Das geht auch nur, weil es der einzige ternäre (dreistellige) Operator ist.

Ich nenne ?? für mich "Not Null Operator"

Thema: Kanntet ihr den ??-Operator? [null coalescing-Operator]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo!

Ich habe mir, als ich vor bald 2 Jahren in ein C#-Projekt reinrutschte zunächst das C#-Buch durchgelesen und dann noch im Internet nach Neuerungen gesucht und war begeistert von dem ??.
Sehr nützlich!

Was ich noch gerne hätte wäre folgende Erleichterung:


void MyMethod(object param)
{
  if (param == null) throw new ArgumentNullException("param");
  ...
}

hätte ich gerne vereinfacht in

void MyMethod(object !param)
{
  ...
}
oder so ähnlich.

Sprich: Ich hätte gerne die Möglichkeit einer Markierung von Parametern, die Aussagt, daß diese nicht null sein dürfen und wenn sie es doch sind eine ArgumentNullException geworfen wird, ohne das ich den Code Explizit schreiben muß.

Das spart zum einen Schreibarbeit und zum anderen kann ich, wenn ich mir die Definition einer Methode ansehe (was man ja ständig tut, wenn man Intellisense nutzt) direkt erkennen, ob ein Parameter auch null sein darf oder nicht und muß nicht erst die Doku lesen...

Gruß
T-Man

Thema: ScriptManager wird mit absolutem Pfad aufgerufen
Am im Forum: Web-Technologien

Die URL schreibe nicht ich. Die wird automatisch eingetragen. Durch das Ajax.

Ich habe in meiner aspx - Seite folgendes Eingetragen um Ajax nutzen zu können:

<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>

und desweiteren

<asp:ScriptManager ID="ScriptManager1" runat="server" />


In der resultierenden Html-Seite, die beim Browser ankommt steht nun u.a.

<script src="/meinprojekt/ScriptResource.axd?d=..." type="text/javascript"></script>

wenn im IIS ein Virtuelles Verzeichnis namens meinprojekt angelegt wird, das auf das Projekt verweist und das Projekt über dieses virtuelle Verzeichnis aufgerufen wird.

Thema: ScriptManager wird mit absolutem Pfad aufgerufen
Am im Forum: Web-Technologien

Ich setze ja die Verweise nicht selbst. Die werden gesetzt. Sonst würde ich es ja richtig machen.


Der Kunde hat das Projekt auf seinem Server installiert.
In welches Verzeichnis ist völlig egal.
Er hat nun im IIS ein Virtuelles Verzeichnis namens "meinprojekt" angelegt, das auf das Projekt verweist. Wenn er nun intern darauf zugreifen will ruft er halt http://rechnername/meinprojekt auf. Da wird dann die Seite zusammengebaut und u.a. kommt darin der Verweis /meinprojekt/ScriptResource.axd vor. Der Funktioniert dann auch. Es läuft alls bestens.
Nun hat der Kunde noch eine Umleitung von https://www.tollerkunde.de/tollesprojekt auf http://rechnername/meinprojekt. Wie genau er das eingerichtet hat, weiß ich nicht. Er will es so und soll funktionieren.
Nun ist aber eben das Problem da, das wohl durch diese Umleitung beim Zusammenschrauben der Verweise offenbar http://rechnername/meinprojekt als Basis angesehen wird und die Verweise werden auf /meinprojekt gelegt.
Der Browser ruft dann logischerweise https://www.tollerkunde.de/meinprojekt/ScriptResource.axd auf und bekommt nichts.

Ich habe das Problem bei dem Kunden nun so gelöst, daß er das interne virtuelle Verzeichnis umbenannt hat in tollesprojekt.

Das kann aber letztlich nicht die Lösung sein. Was ist z.B. wenn ein Kunde sowohl von www.server1.de aus, als auch von www.server2.de/verzeichnis aus eine Umleitung auf http://rechnername/meinprojekt legt. Dann kann die eine Umleitung ja gar nicht mehr funktionieren.

Natürlich kann man durch geschicktes Umleiten die Probleme lösen, aber das Umleiten ist nunmal Sache des Kunden. Und ich möchte mein Projekt gerne so haben, das es mit jeder Umleitung funktioniert. Das würde es auch, wenn das Ajax die Verweise nicht absolut, sondern relativ setzen würde.

Ich glaube mittlerweile, daß das ein Bug des Ajax ist und man da nichts dran ändern kann. Andererseits kann ich mir nicht vorstellen, daß dieser Bug nicht schon längst aufgefallen ist und behoben wurde.

Nochmal Danke für alle (bisherigen und künftigen) Kommentare
T-Man

Thema: Befehlszeile innerhalb Thread wird doppelt ausgeführt!
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Original von below
Argh, ok, ich wusste nicht das der Code der der Rekursion folgt anschließend noch ausgeführt wird. Gibt es eine Möglichkeit das zu verhindern?
Direkt nach der rekursiven Anwesung ein return

Thema: Befehlszeile innerhalb Thread wird doppelt ausgeführt!
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Beim zweiten Aufruf wird ja irgendwann das Ende der methode erreicht und die Ausgabe findet statt. Dann kehrt die Methode zurück und du bist direkt nach der dem "zweiten Aufruf", also wieder zurück im ersten. Der läuft jetzt natürlich auch noch zu Ende...

Thema: "Labyrinth" programmieren...nur wie?
Am im Forum: Rund um die Programmierung

Ich würde vorschlagen, Du denkst zunächst gar nicht über die Grafik nach, denn die ist letzlich sowieso nur Nebensache.

Du solltest Di zunächst überlegen, wie Du das Feld speichern willst. (Ein Array, eine besondere Klasse...)
Dann mußt Du Dir überlegen, welche Methoden Du benötigst um Felder zu setzten, zu prüfen etc.

Zur Grafik kommst Du dann erst, wenn die Logik funktioniert.

Thema: Problem mit Benutzerrollen
Am im Forum: Web-Technologien

Wenn Die verschiedenen Seiten in verschiedenen Ordnern liegen ist es einfach. Du kannst in jedem Ordner eine eigene web.config haben. Ansonsten weiß ich nicht wie es geht...

Thema: SMTP Mail Server - Mailbox unavailable
Am im Forum: Web-Technologien

Mußt Du vielleicht noch beim SMTPClient den Port mit angeben?

Ansonsten kanst Du auch statt eines eigenen SmtpClients eine GMX-Adresse oder so verwenden:

Beispiel:

SmtpClient mail = new SmtpClient("smtp.gmx.net", 25);
mail.Credentials = new NetworkCredential("meineadresse@gmx.de", "passwort");
mail.Send(new MailMessage("from...", "to...", "subject...", "text..."));

Thema: String suchen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Falls Du von Regex noch nicht so richtig Ahnung hast:

http://www.regular-expressions.info/tutorial.html

Du benötigst u.a. Lookahead.

Thema: ScriptManager wird mit absolutem Pfad aufgerufen
Am im Forum: Web-Technologien

Hallo!

Ich habe folgendes Problem:

In meinem ASP.NET (2.0) Projekt nutze ich auch Ajax. Das funzt auch alles wunderbar, solange der Kunde keine Umleitung benutzt.

Wenn er eine Umleitung benutzt tritt folgendes Problem auf:

Die Seite ist intern z.B. über http://rechnername/meinprojekt/ zu erreichen.
Nun gibt es eine Umleitung für Extern. z.B.: https://www.blabla.de/tollesprojekt/

In der Seite sind nun für das Ajax Scriptaufrufe mit absoluter url drin:

Beispiel:
<script src="/meinprojekt/WebResource.axd?d=..." type="text/javascript"></script>

und

<script src="/meinprojekt/ScriptResource.axd?d=..." type="text/javascript"></script>

Beim Zugriff von Intern ist alles OK. Aber bei Zugriff von Extern natürlich nicht.
Das liegt an dem absoluten Verweis /meinprojekt/...
Wäre er /tollesprojekt/... wäre alles super, aber so ist es nicht.


Nun meine Frage:

Wie kann ich dafür sorgen, daß nicht absolute Pfade angegeben werden?
Es würde ja wunderbar funktionieren wenn da

src="ScriptResource.axd?..."

stehen würde statt

src="/meinprojekt/ScriptResource.axd?..."

Oder ist das evtl. ein Bug und ich kann an den absoluten Pfaden nichts ändern?

Vielen Dank schonmal in vorraus.
T-Man

Thema: new T(x) in einer generischen Klasse verwenden (CS0417)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Original von herbivore
Hallo newsunflower,

dabei ist es doch so einfach: [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen).
Zitat
This error occurs if a call to the new operator on a type parameter has arguments. The only constructor that can be called using the new operator on an unknown parameter type is a constructor with no arguments. If you need to call another constructor, consider using a class type constraint or interface constraint.
herbivore
Hallo herbivore,

ich verstehe leider nicht, wie ich mit einem class type constraint oder einem interface constraint festlegen kann, daß es diesen Konstruktor geben muß. In einem Interface kann man zwar Eigenschaften und Methoden vorgeben, aber Konstruktoren nicht, oder etwa doch?

Gruß
T-Man

Thema: new T(x) in einer generischen Klasse verwenden (CS0417)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wie wäre es mit folgendem:



public class Key
{
  public Key()
  {
  }

  public Key(int k)
  {
  }

  public Key GetKey(int k)
  {
    return new Key(k);
  }
}

public class Something<T> where T : Key, new()
{
  public Something()
  {
    T key1 = new T();
    T key2 =  key1.GetKey(5);
  }
}

Thema: Zugriff auf Section system.webServer in web.config
Am im Forum: Web-Technologien

Moin!

Ich habe meine Web Anwendung um ein Ajax-Control erweitert. Dazu mußte auch die web.config erweitert werden. Es kommen im Bereich system.web httpModules und httpHandler hinzu und im Bereich system.webServer kommt auch einiges hinzu.
Auf meinem Entwicklungssystem habe ich die web.config einfach von Hand bearbeitet. Auf "Kundenrechnern" muß die web.config nun aber programmatisch bearbeitet werden.
Auf den Bereich system.web kann ich wunderbar über den WebConfigurationManager zugreifen.

Für den Bereich system.webServer stellt das Framework leider keine Klassen bereit.
Wenn ich den Bereich Abfrage bekomme ich schlicht ein Objekt der Klasse IgnoreSection. Mit dem kann ich leider nichts anfangen.

Hat jemand damit Erfahrung gemacht?
Gibt es eine Möglichkeit den Bereich anzusprechen, ohne über System.Xml... zu gehen?

Vielen Dank schonmal in vorraus.
Gruß
T-Man

Thema: Outlook 2007 AddIn läuft nicht unter 2003
Am im Forum: Office-Technologien

Danke. Weiß jetzt worum es geht. Aber das hilft leider auch nichts.
Ich benutze ja die VSTO Vorlage für Outlook 2007, die angeblich auch unter Outlook 2003 laufen soll. Habe selber nur eine Zeile Code hinzugefügt und zwar
System.Windows.Forms.MessageBox.Show("Hello World");. Ich selber nutze also gar nichts aus den Outlook Bibliotheken, muß also auch kein Late Binding einsetzen. Und in dem Code, der durch die Vorlage schon gestellt ist, soll man ja nicht rumpfuschen. Wenn der Late Binding nutzen sollte und es nicht tut, dann taugt die Vorlage nicht und das kann ich mir nicht vorstellen. Wenn es heißt, AddIns, die mit der Vorlage gebaut werden, funktionieren auch unter 2003, wird da ja auch was dran sein, oder???

Hat keiner mehr 'n tipp?

Gruß
T-Man

Thema: Outlook 2007 AddIn läuft nicht unter 2003
Am im Forum: Office-Technologien

Ich weiß nur in etwa was das ist. Wie stell ich es denn ein? Und was genau bewirkt das? Hast Du 'n guten Link zu dem Thema?

Gruß
T-Man