Laden...

Forenbeiträge von Maruu Ingesamt 121 Beiträge

12.03.2015 - 07:28 Uhr

Die Änderungen sind nicht groß, das sehe ich ebenso. Ich konnte nur die Web API in meinen Tests nicht mehr direkt in einem Executable (Console, WPF,...) Projekt einbinden bzw. hab dies auch nirgends als Beispiel gefunden. Das einzige was geht ist in einer WebApp, die will ich aber nicht in jedem Projekt haben. Sollte das weiterhin gehen wäre für mich alles in Ordnung, die Umsetellung von WebAPI 2 auf vnext ist denke ich nicht all zu schwer was den Code angeht, falls es eben geht.

Edit:

Nur nochmal als Zusammenfassung, bisher sah Selfhosting der Web Api in einer Executable (hier Console) so aus:
http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

Das würde ich auch gern mit ASP.NET vnext Web API machen.

Diese beiden Stackoverflow-Threads fragen vermutlich das gleiche:
http://stackoverflow.com/questions/25403746/self-hosted-vnext-application
http://stackoverflow.com/questions/27787636/owin-hosting-asp-net-mvc-6-vnext

Und in einem steht es geht so nicht mehr, man muss sich eine WebApp basteln die dann wiederum ge-Selfhostet werden kann. Das ist aber nicht mein gewünschtes Ziel.

11.03.2015 - 16:43 Uhr

Hallo,

@MarsStein: Ich kenne die Möglichkeit mit WCF REST/JSON zu machen, allerdings war es ursprünglich nicht dafür ausgelegt (DataContract, DataMember,...) sondern eher für SOAP. Dennoch bleibt es eine Alternative, da hast Du recht!
@pinki: Mit vnext verschmilzt MVC mit Web Api, das ist ja das verwirrende 😉
@Abt: Mir ist klar das vnext noch nicht produktiv eingesetzt werden darf. Aber ich vermute das dies dann spätestens mit der BUILD Konferenz möglich ist. Es fühlt sich halt so an jetzt auf Web API 2 zu setzen wie wenn man jetzt noch ein Silverlight-Projekt startet. Man weiß es funktioniert, aber die neue technik ist da(steht vor der Türe) und meine eingesetzte Technik läuft aus.

Hier auch noch ein Link zu den Folien von der letzten Basta von Holger Schwichtenberg über die "Das ist neu und anders in ASP.NET 5.0 mit MVC & WebAPI 6.0":
http://it-visions.de/produkte/vortragsdetails.aspx?v=7925
Leider finde ich da auch nicht das passende. Evtl. schreib ich Ihm mal und frage konkret nach.

11.03.2015 - 15:37 Uhr

@MarsStein: WebAPI muss es nicht zwingend sein, REST/JSON aber schon. Ich sehe halt das die Zukunft immer mehr in Richtung REST geht und sobald ich zu Android/iOS schaue bleibt als Kommunikationskanal nur noch REST/JSON übrig. WCF im klassischen Sinne mit SOAP fällt gänzlich raus, mit JSON ggf. möglich.

@unconnected: Ich bin mir nicht 100% sicher, aber dein Artikel zeigt meiner Meinung nach das Selfhosting einer Web API 2.2 Anwendung (was bisher ja ging) und nicht von ASP.NET vnext Web API. Das sieht man daran das der Controller von ApiController ableitet anstatt wie bei vnext nur noch von Controller. Ein Beispiel dazu ist hier zu finden:
http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6
Auf http://www.asp.net/vnext konnte ich eben leider bisher kein Beispiel finden bei dem die Web API in einer Executable gehostet ist.

11.03.2015 - 14:32 Uhr

Hallo zusammen,

ich google mich nun schon seit Stunden/Tagen kreuz und quer durchs Netzt und bin immer noch nicht schlau geworden.

Problemstellung: Es soll eine Client-Server Anwendung (im lokalen Netzwerk) erstellt werden bei der der Client mit dem Server via REST (JSON) kommuniziert. Aus verschiedenen Gründen (Zugriff auf lokals Dateisystem,...) läuft der Server als Windows-Dienst und nicht in einem IIS oder Azure (dies ist auch nicht geplant).

Nach kurzem googeln hätte ich für die Kommunikation beim Server Microsoft Web Api 2 als REST Framework vorgeschlagen das über OWIN Selfhost im Windows-Dienst gehostet wird. Fertig!

So und dann googelt man etwas genauer und findet Wald vor lauter Bäumen nicht mehr:

Mit dem in kürze kommenden ASP.NET vnext (man will ja immer mit der Zeit gehen) wird das bisher separate WebAPI ja in ASP.NET integriert. ASP.NET wird modular und kann nun auch unter anderem auf beliebigen Systemen gehostet werden (IIS, Selfhost, ...). Nun konnte ich niergends finden (und auch im Test mit Visual Studio 2015 CTP 6 und ASP.NET vnext erkennen) das man die WebAPI noch direkt in einer Executable (Consolen-/WPF-Applikation, Dienst,...) einbinden kann, sondern das ganze läuft stets in einer WebApp. Stimmt dies? Wenn ja, kann man mit ASP.NET vnext keine REST Service für normale Executables zur Verfügung stellen. Muss man in so einem Fall auf andere Frameworks wie Nancy oder ServiceStack zurückgreifen? Das fände ich sehr schade, weil man hier darauf hoffen muss dass diese Projekte in Zukunft noch weiterentwickelt werden.

Gruß

Maruu

20.11.2014 - 12:54 Uhr

Es müsste nicht zwingend eine GUID sein, hauptsache ein eindeutige ID. Ich hatte mir auch schon überlegt einen Hash über den Namespace+Containername+Controlname zu erstellen. Ändert man dann aber den Namen stimmt die ID auch nicht mehr. Es gibt also leider keine schnelle Lösung wie es aussieht.

20.11.2014 - 10:03 Uhr

Ok, hatte gehofft es gibt eine Möglichkeit. Den Weg über das AddOn will ich nicht gehen. Das Tool das die GUIDs prüft wäre eine Möglichkeit.

Der Code im Konstruktor ist nur da um initial eine GUID zu generieren. Das macht er auch gut. Beim zweiten mal wird die GUID dann von außen gesetzt. Leider scheint man den Designer nicht so einfach beinflussen zu können das er eben beim Kopieren eines Controls nochmal einen gewissen Code ausführt. Aber egal, ich werde es schon irgendwie anders geregelt bekommen 😉

Trotzdem vielen Dank!

19.11.2014 - 22:08 Uhr

@herbivore: Der Setter muss public sein damit die GUID auch dauerhaft gespeichert wird. Die GUID soll 1x beim ersten Erstellen (im Designer) generiert und danach nicht mehr verändert werden. Es geht nicht darum bei jedem Erstellen des Buttons eine neue GUID zu generieren, sondern nach möglichkeit nur beim ersten mal. Das funktioniert ja auch, nur leider nicht wenn der Button kopiert wird, hier wird auch die GUID kopiert statt eine neue erstellt.

Setze ich den Setter auf private, wird der Wert nicht in den Designer-Code übernommen.

19.11.2014 - 14:12 Uhr

Hallo zusammen,

für ein Projekt werden eigene UserControls benötigt. Dabei leite ich von der jeweiligen Basisklasse (z.B. Button, TextBox usw.) ab um die Grundfunktionalität zu erhalten. Nun soll jedes Custom-UserControl ein Property mit einer eindeutigen GUID erhalten. Dies hilft später das UserControl genau zu identifizieren und z.B. darauf in der Hilfe zu referenzieren.

Folgende Idee hatte ich:


public class GuidButton:Button
{
    [DefaultValue(null)]
    public string ControlGUID { get; set; }

    public GuidButton()
    {
        ControlGUID = Guid.NewGuid().ToString();
    }
}

So wird automatisch beim Erstellen des GuidButtons im Designer eine neue GUID generiert und im Designer Code hinterlegt.

Das Problem ist nun, arbeitet man mit dem Designer und kopiert einen GuidButton, wird ein neuer GuidButton erstellt aber die GUID wird mitkopiert und nicht neu erstellt.

Hier ein Beispiel:


 // 
 // guidButton1
 // 
 this.guidButton1.ControlGUID = "4446f5e2-068c-475c-bd52-5cd879afb3c8";
 this.guidButton1.Location = new System.Drawing.Point(137, 89);
 this.guidButton1.Name = "guidButton1";
 this.guidButton1.Size = new System.Drawing.Size(75, 23);
 this.guidButton1.TabIndex = 0;
 this.guidButton1.Text = "guidButton1";
 this.guidButton1.UseVisualStyleBackColor = true;
 // 
 // guidButton2
 // 
 this.guidButton2.ControlGUID = "4446f5e2-068c-475c-bd52-5cd879afb3c8";
 this.guidButton2.Location = new System.Drawing.Point(137, 128);
 this.guidButton2.Name = "guidButton2";
 this.guidButton2.Size = new System.Drawing.Size(75, 23);
 this.guidButton2.TabIndex = 1;
 this.guidButton2.Text = "guidButton2";
 this.guidButton2.UseVisualStyleBackColor = true;

Beides mal die selbe GUID, dies ist nicht gewollt. Lässt sich das verhindern?

Vielen Dank vorab für die Hilfe,

Hannes

08.08.2013 - 15:30 Uhr

Hallo zusammen,

ich versuche gerade eine Anwendung zu entwickeln die auf SAP Business one zugreift. Nun muss ich neben der Version 8.8.2 auch die neuste Version 9.0.0 der API unterstützen. SAP stellt die API als COM-Objekte zur Verfügung. Ich hab nun versucht über Visual Studio einen Verweis auf beide COM-Objekte hinzuzufügen, erhalte aber beim hinzufügen des zweiten COM-Objekt den Fehler:

Fehlermeldung:
Could not add a reference to {FC8030BE-F5D2-4B8E-8F92-44228FE30090}\9.0:Es ist bereits ein Verweis auf diese Typbibliothek vorhanden. Sie müssen den Verweis "SAPbobsCOM" löschen, bevor Sie diesen hinzufügen.

Problem ist vermutlich das beide COM-Objekte "SAPbobsCOM" heissen und sich nur in der Version unterschieden.

Beim COM-Verweis hinzufügen wird ja eine Interop-Dll (Interop.SAPbobsCOM.dll) erzeugt. Also hab ich mir beide DLLs nacheinander erzeugen lassen, beide DLLs umbenannt und als Verweis von Hand hinzugefügt. Dann jeder DLL einen Alias verpast und im Quellcode "external alias ..." verwendet. Beim kompilieren erhalte ich aber folgende Fehlermeldung:

Fehlermeldung:
Fehler 1 Es wurde bereits eine Assembly mit dem einfachen Namen "Interop.SAPbobsCOM, Version=8.8.0.0, Culture=neutral, PublicKeyToken=null importiert. Entfernen Sie einen der Verweise, oder signieren Sie die Verweise, damit sie parallel verwendet werden können. c:...lib\Interop.SAPbobsCOM.8.8.2.dll SAP

Leider komm ich jetzt nicht weiter. Wie kann ich zwei COM-Objekte mit dem gleichen Namen ("SAPbobsCOM") importieren und parallel ansprechen (ggf. durch unterschiedliche Namespace o.ä.)?

Gruß

Hannes

12.03.2013 - 12:46 Uhr

Hallo zusammen,

ich bin gerade dabei eine .NET 4.0 Anwendung zu bauen. Dabei soll auf ein Warenwirtschafts-Programm zugegriffen werden das eine COM Schnittstelle besitzt. Dieses Programm bringt jedoch alle 3 Monate eine Aktualisierung heraus die auch die COM-Schnittstelle aktualisiert. Wenn ich nun in Visual Studio eine Referenz hinzufüge und die COM-Komponente auswähle wird mir automatisch eine DLL dazu erstellt die den Zugriff kapselt, aber nur für jeweils die aktuelle Version der COM-Schnittstelle.

Ich habe nun das Problem das ich alle 3 Monate wenn sich die Schnittstelle ändert auch die Referenz aktualisieren muss. Weiterhin muss ich aber gleichzeitig auch die ältere Versionen der COM-Schnittstelle unterstützen. Daher meine Frage, gibt es eine Möglichkeit die Erstellung der DLL-Datei die die COM-Schnittstelle kapselt zu beeinflussen und ggf. den Namen und den Namespace darin anzupassen? So könnte ich den Namen und Namespace z.B. folgendermaßen nennen z.B. Wawi.v1_3_0.xyz, Wawi.v1_4_0.xyz usw. und im Programm selbst die passende Version auswählen.

Damit könnte ich alle paar Monate mein Programm aktualisieren und dazu mehrere der Versionen der COM-Schnittstelle der Warenwirtschaft ausliefern. Oder gibt es eine Alternative (z.B. Late Binding oder ähnliches)?

Gruß

Hannes

29.10.2012 - 13:43 Uhr

Vielleicht war es ein wenig überspitzt ausgedrückt aber ich kann den Hype inkl. Marketing um HTML 5 einfach nicht ganz verstehen.

Mir fehlen keine bestimmten Klassen sondern generell in JS die Möglichkeit Klassen zu verwenden. Auch wenn wir die Sprachkonstrukte von JS außen vor lassen, da man hier wirklich über gut und böse streiten kann, wie sieht es mit den anderen Punkten aus.

Wie schütze ich meine Anwendung davor das kein konkurrent den Quellcode kopiert?
Wie bringe ich einer (kleinen) Firma bei, das sie nun statt ausschließlich .NET nun neben dem .NET Entwickler für die Serverseite Entwickler für HTML, CSS, JS und ggf. PHP benötig?

Gruß

Hannes

29.10.2012 - 13:13 Uhr

Hi Christian,

Danke für den Link. TypeScript kannte ich bisher nicht. Ich hab den Wikipediaeintrag und einige andere Blogbeiträge kurz dazu durchgelesen. Generell finde ich den Ansatz interessant, ich sehe jedoch trotzdem noch Probleme:

  • Wie kann ich ordentlich debuggen? Einen Debugger in VS gibt es meines Wissens nach nicht und den übersetzten JS Code zu debuggen sehe ich als wenig sinnvoll an.
  • Wenn HTML 5, CSS 3 und JS eine so große Neuerung für die komplette IT Welt sind, wieso sind bewährte Konstrukte wie Classen, Objekte, typisierte Variablen usw. nicht längst im JS Standard? JS ist meiner Meinung nach eine gewachsene Sprache und nie für große Projekte ausgelegt gewesen.

Das sind Ansätze die in Zukunft mit in den Standard fließen bzw. passende Tools vorhanden sind, jetzt aber eine neue Applikation mit einem der vielen proprioritären Systemen zu starten gleicht doch genauso Selbstmord wenn man nicht weiß ob die sich zum Standard entwickeln.?!

Und selbst wenn, das behebt nur eines der im letzten Post genannten Probleme.

Gruß

Hannes

29.10.2012 - 11:32 Uhr

Danke für die Antwort.

In den letzten Tagen habe ich viel über HTML 5 und Silverlight gelesen. Der Ansatz von HTML 5 gefällt mir gut (Plattformübergreifend, Stadardisiert) aber ich scheue mich noch davor es als universelle Wunderwaffe zu verwenden. Im Bereich normale Webseiten mag HTML 5 die Lösung sein, für (größere) Businessanwendungen bezweifle ich das aber.

Mit Javascript bekommen wir auf einen Schlag wieder viele Probleme die wir über Jahre hinweg u. a. mit C# / .NET abgeschafft haben. Dazu gehören:

  • Laufzeitprobleme
  • keine stark typisierten Datentypen
  • unterschiedliche Darstellungen in verschiedenen Browsern (ja, auch HTML 5 und CSS 3 werden dies nicht 100% lösen)
  • Sicherheit? JS ist eine Browsersprache, der ganze Quellcode wird also zum Client übertragen und kann von jedem gelesen werden. Wer sagt mir das der Konkurrent nicht einfach die Applikation kopiert?
  • 3-4 verschiedene Technologien gleichzeitig. Neben HTML 5 muss CSS (3), JS und ggf. noch eine Serversprache wie PHP verwendet werden, alles um eine! Anwendung zu erstellen.
  • Unterschiedliche JS Frameworks, ein richtiger Standard hat sich noch nicht etabliert.

Weiterhin ist die Unterstützung von HTML und CSS in VS 2012 noch nicht so optimal wie man sich das wünscht.

Als Firma stellt sich jetzt die Frage auf eine Technologie zu setzen die ausgereift ist die aber (inoffiziell) abgekündigt wurde oder auf eine Technologie zu setzen die noch nicht ausgereift ist und ggf. so schnell auch nicht wird.

Den Marketingkrieg hat wohl HTML 5 deutlich gewonnen, ob das allerdings so gut ist wage ich zu bezweifeln.

Gruß

Hannes

* Wenn ich von HTML 5 spreche meine ich immer die Kombination aus HTML 5, CSS (3) und JavaScript

24.10.2012 - 11:57 Uhr

Leider handelt es sich um einen Mischbetrieb, der Einsatz ist sowohl im Intranet wie auch im Internet (vermutlich hauptsächlich) geplant. XBAP (WPF-Browseranwendungen) ist jedoch stark von den Sicherheitseinstellungen des Browsers abhängig und leider nur unter Windows (und dort nur IE und Firefox) anwendbar. Daher eher eine Alternative mit Einschränkungen.

Gruß Hannes

24.10.2012 - 11:34 Uhr

Hallo zusammen,

als kleines 3-Mann Unternehmen haben wir aktuell ein Hauptprodukt auf C#/.NET Basis, eine klassische Desktopanwendung. Nun steht aber die Entwicklung einer größeren Business-Anwendung an und daher werden die möglichen Technologien durchleuchtet. Dabei handelt es sich um ein klassisches Client-Server System, wobei die Server-Seite uns wenig Kopfzerbrechen macht (.NET Service). Clientseitig sieht es hier schon deutlich anders aus. Generell wäre auch hier eine Desktopanwendung möglich, allerdings gefällt uns der Gedanke dass der Client in einem Browser läuft sehr gut, da man dadurch recht leicht die Version des Clients kontrollieren kann, von überall darauf zugreifen kann und je nach Technologie auch Betriebssystem unabhängig ist.

Silverlight scheint hier das optimale Produkt zu sein:

  • Es gibt Plugins für viele Browser
  • Es gibt Plugins für Windows und Mac
  • Die Softwareverteilung erfolgt zentral und der Client kann problemlos aktualisiert werden
  • Zugriff von nahezu jedem Rechner möglich ohne Installationsrechte
  • Keine Darstallungsprobleme bei unterschiedlichen Browsern/Auflösungen usw.
  • Die Entwicklung findet in C# statt
  • kaum Einarbeitungsaufwand für normale .NET Entwickler
  • Optionaler Of-Browser-Modus und Trusted-Modus für Dateisystem/Registry/...-Zugriff

Kurz und knapp wir hatten bisher keinen Kontakt mit Silverlight aber die Pro Argumente im Gegensatz zu ASP.NET, Click-Once, Desktopanwendung haben uns mehr als überzeugt.

Und dann kahm das Erwachen. Die aktuelle Politik von Microsoft scheint Silverlight keine Beachtung mehr zu schenken. Nach dem Lesen endloser Threads, Blogs und sonstiger Artikeln scheint mir die Zukunft von Silverlight sehr ungewiss. Ofiziell wird eine Unterstützung bis 2021 garantiert. Aber mit Windows 8 wird auf WinRT und HTML 5 gesetzt, von Silverlight ist kaum noch die Rede.

Daher meine Frage, wie sollte man als (kleines) Unternehme mit Silverlight umgehen. 10 Jahre Supportzeit ist viel, was innerhalb von 10 Jahren passiert weiß niemand. Aber ist es wirklich sinnvoll jetzt noch auf Silverlight zu setzen und mit einer Neuentwicklung zu starten von der man weiß das die Technologie vermutlich abgekündigt ist?

Was sind die Alternativen? HTML 5 ist noch kein offizieller Standard, außerdem fehlt uns intern die nötige Erfahrung mit HTML 5 / JS. Bei ASP.NET sehe ich den Entwicklungsaufwand deutlich höher und man kämpft mit Problemen wie unterschiedliche Browserdarstellung usw. Gibt es also aktuell überhaupt sinvolle alternativen?

Ich freue mich von euch zu hören.

Gruß

Hannes

PS: Ein ofizielles Statement zu der Zukunft von Silverlight wäre vermutlich nicht nur für uns ein Segen.

09.08.2012 - 09:03 Uhr

Hallo,

gibt es mittlerweile gute Bücher zur Workflow Foundation? Interessant wäre für mich zum einen der Einstieg in die WF aber vor allem auch die Erklärung wann man WF nutzen kann und wann man es lieber lassen sollte. Also am besten anhand einiger Szenarien kurz Beschrieben das WF passt oder nicht.

Sprache sollte deutsch oder englisch sein.

Hat jemand einen Tipp dazu, alternativ auch gerne ein Online-Tutorial o.ä.?

Gruß

Hannes

13.12.2011 - 15:08 Uhr

Danke für die Antwort. Um genau zu sein möchte ich später folgendes haben:

Ich benötige ein Control (egal ob CustomControl oder UserControl) das einen blauen Hintergrund und einen roten Rahmen hat. Nun will ich von diesem Basiscontrol ableiten, eine Ableitung soll dann noch auf dem Control eine Uhr Platzieren, eine andere Ableitung soll auf dem Control eine Textbox platzieren. Zum Schluss sollen von diesen Ableitung Instanzen erstellt werden und diese Instanzen dann auf einem Window platziert werden.

Es soll also zum Schluss ein Window geben in dem mehrere dieser Blauen Controls mit rotem Rand sind und auf jedem dieser Quadrate ist noch ein Control (wie erwähnt eine Uhr, eine Textbox usw.).

Welches Vorgehen empfiehlt sich hier, Ableiten von einer Baisklasse und wenn ja von einem Control oder UserControl? Oder doch anders?

Gruß

Maruu

13.12.2011 - 13:23 Uhr

Mhhhm, das Problem ist das Grid im abgeleiteten UserControl. Wenn ich das mache:


<myTypes:UCBase x:Class="Testprojekt.UCInherit"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="284" d:DesignWidth="338"
             xmlns:myTypes="clr-namespace:Testprojekt">

</myTypes:UCBase>

Dann geht es. Nur kann ich jetzt lediglich ein Element auf dem Usercontrol platzieren. Wenn ich das Grid drin lasse und den hintergrund auf transparent setze geht es leider auch nicht. Hat jemand ne Idee wie man das lösen kann?

Gruß

Maruu

13.12.2011 - 09:01 Uhr

Hallo zusammen,

ich bin gerade dabei in das Thema WPF einzusteigen. Vieles hab ich schon hinbekommen (wenn es auch teilweise echt umständlich ist im Gegensatz zu Win Forms). Nur beim Ableiten von Controls hab ich noch Probleme. Ich weiß mitlerweile das ein UserControl mit Xaml nicht von einem anderen UserControl mit Xaml ableiten kann. Jedoch habe ich gelesen das ich von einem UserControl ohne Xaml ableiten kann. Deshalb hab ich folgendes versucht:

Basisklasse:


namespace Testprojekt
{
    public class UCBase : UserControl
    {
        public UCBase():base()
        {
            Grid tmpGrid = new Grid();
            tmpGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            tmpGrid.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
            tmpGrid.Background = System.Windows.Media.Brushes.Blue;
            this.Content = tmpGrid;
        }
    }
}

Abgeleitete Klasse:


<myTypes:UCBase x:Class="Testprojekt.UCInherit"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="284" d:DesignWidth="338"
             xmlns:myTypes="clr-namespace:Testprojekt">
    <Grid>

    </Grid>
</myTypes:UCBase>


namespace Testprojekt
{
    public partial class UCInherit: UCBase
    {
        public UCInherit()
        {
            InitializeComponent();
        }
    }
}

Ich habe nun gedacht wenn ich das UCInherit öffne das ich nen Blauen Hintergrund von meinem Basis-UserControl sehe, aber Pustekuchen. Irgendwie ignoriert er alle Controls die im Konstruktor des Basis-UserControls erstelle. Hat jemand ne Idee wieso?

Gruß

Maruu

31.10.2011 - 13:48 Uhr

Besten Dank, langsam wird es hell 😃 Trivial war dieses Statement dennoch nicht.

Gruß

Hannes

31.10.2011 - 07:49 Uhr

Hallo herbivore,

sorry, ich muss doch nochmal nachhaken. Das RegEx-Statement funktioniert super aber ich will es gerne auch verstehen damit ich es nächstes mal auch selbst anwenden kann.

Hier nochmal das Statement:

.((?<!FBA-).)*$

Ich nehm es jetzt mal auseinander:

(?<!FBA-) macht ja nichts anderes als zu sagen es darf vor dem gesuchten String kein FBA- vorkommen.

Ich vermute da man das Statement nicht beliebig oft machen kann, also (?<!FBA-)* geht nicht, hast Du den Punkt und die Klammern drum rum danach angefügt um das nächste Zeichen optional noch mitzunehmen also ((?<!FBA-).) und das ganze Statement kann man nun optional und beliebig oft machen mit ((?<!FBA-).)*

So da es ja ein negatives Lookaround ist durchsuchen wir die Zeichenkette von hinten daher das $

Und da das Statement ((?<!FBA-).)* von einem String FBA-12345 nicht nur FBA- abschneidet sondern auch das erste Folgezeichen, also FBA-1 abschneidet, muss dieses erste Folgezeichen doch wieder mitgenommen werden, daher noch der führende Punkt im .((?<!FBA-).)*$

Lieg ich da grob richtig?

Gruß

Hannes

29.10.2011 - 11:43 Uhr

Hallo alle zusammen,

vielen Dank für die vielen Antworten. Ich will das Forum wirklich nichta ls RegEx generator missbrauchen, das ganze ist nur sehr kompliziert, das hat man an den vielen Antworten gesehen. Ich hab bereits schon einiges mit RegEx gemacht nur da bin ich leide rnicht drauf gekommen.

Vielen vielen Dank an herbivore, das war die richtige Lösung:

.((?<!FBA-).)*$

das ist das Statement da funktioniert!

Auch vielen Dank an alle Anderen für die Hilfe.

Gruß

Hannes

28.10.2011 - 15:53 Uhr

Hi Alf Ator,

sowas in die Richtung hatte ich auch schon, leider muss er auch folgendes erkennen:

FBA-FBA-F-12345

also F-12345

er soll also wirklich nur FBA- wegschneiden und kein einzelnes F-

Gruß

Hannes

28.10.2011 - 15:02 Uhr

Hallo rongchaua,

Du hast schon recht, die von Dir gezeigte Methode funtkioniert aber leider kann ich den C# Code vor oder nach dem RegEx nicht beinflussne, ich kann also nicht sagen das er die erste oder letzte Gruppe des Matchings nehmen soll. Das gesucht RegEx dürfte nur ein Ergebnis haben.

Gruß

Hannes

28.10.2011 - 14:51 Uhr

@TheBrainiac: Danke, aber was steht denn anstelle von <Anderes> ? Irgendwie steh ich da auf dem Schlauch.

@ Alf Ator: die Tutorials habe ich gelesen und auch schon einiges ausprobiert. Ich hatte schon einige Regex gebastelt aber an dieser Stelle komm ich einfach nicht weiter. Hab mir auch schon RegEx Studio installiert, aber das macht leide rauch nicht allzuviel mehr wie z.B. http://regexp-tester.mediacix.de/exp/regex/. Leider hab ich auch in der Suche nix passendes zu dem gleichen Problem gefunden, daher mein Post.

Das Problem bei ^(FBA-)(?<Anderes>.)$ oder ((FBA-)*)? scheint mir das ich immer das FBA noch als Matching mitbekomme. Irgendwie steh ich da auf dem Schlauch, ich brauch doch eigentlich einen gierigen Ausdruck der den Anfang mit FBA- entfallen lässt.

28.10.2011 - 14:23 Uhr

Hi,

das Problem ist das der hintere Teil variabel ist. Ich geb mal noch ein paar Beispiele:

FBA-45678
FBA-FBA-ABC12345
ABCDE

Hier soll dann 45678, ABC12345 und ABCDE erkannt werden. Es soll also lediglich das FBA- am Anfang weggeschnitten werden.

Gruß

Hannes

28.10.2011 - 13:44 Uhr

Hallo zusammen,

vorab, ich suche eine Lösung in Regex, das ich das ganze auch mit C# locker lösen kann ist mir klar. Leider steht mir an der Stelle nur Regex zur Verfügung.

Hier mein Problem, ich hab verschiedene strings die folgendermaßen aussehen können

12345
FBA-12345
FBA-FBA-12345
FBA-FBA-FBA-12345
FBA-F-12345

Man sieht das am Anfang die Zeichenkette "FBA-" beliebig oft (0 bis x mal) vorkommt. Ich benötige nun per Regex alles das hinter den "FBA-" Zeichenketten steht, also 12345 oder F-12345 (wie im letzten Beispiel).

Nun dachte ich das ich das ganze mit Lookarounds lösen kann z.B. (?≤FBA-).* habe aber irgendwo gelesen das man bei einem Lookaround nicht sagen kann das er beliebig oft vorkommen soll. Leider kann man anscheinend auch nicht ganze Zeichenketten sondern nur einzelne Buchstabe ausschließen. Daher weiß ich leider nicht mehr weiter, habt Ihr ne Idee oder geht das von mir gezeigt Beispiel nicht?

Gruß

Hannes

27.08.2011 - 09:25 Uhr

Danke für die Tipps.

Das Encoding ansich ist vorhanden im XML-Dokument, daran liegt es nicht. Das die Sonderzeichen werden auch in den XML-Node Namen richtig dargestellt. Nur im Innertext der XML-Nodes befinden sich die Uniocode Zeichen. Daher ist es für mich das einfachste den kompletten Text des XML vorher durch die oben gepostete Methode zu jagen und erst danach die Load Methode von XmlDocument mit dem Tex aufzurufen.

Gruß

Maruu

26.08.2011 - 11:35 Uhr

Ich lese es ganz normal mit File.ReadAlltext ein. Das ist aber nicht das Problem. Das Problem ist das die XML-Datei von PHP erzeugt wird und PHP Unicode-zeichen in die Datenfelder der XML-Tags schreibt. Es ist also nicht wirklich ein Problem des Encodings auf meiner Seite.

Ich habe das ganze jetzt so gelöst das ich nach dem Einlesen den Text nochmal durch diese Methode jage und damit die Unicode-Zeichen ersetze.


public static string UnicodezeichenErsetzen(string pText)
{
            Regex tmpRegEx = new Regex(@"&#x([0-9A-Fa-f]{4});");

            pText = tmpRegEx.Replace(pText, delegate(Match match)
            {
                return ((char)Int32.Parse(match.Value.Substring(3, 4), NumberStyles.HexNumber)).ToString();
            });
            return pText;
}

Gruß und Danke für die Hilfe,

Maruu

26.08.2011 - 10:26 Uhr

Hallo zusammen,

ich bin gerade dabei Daten aus einer XML-Datei auszulesen. Das auslesen ist soweit auch kein Problem doch in der XML-Datei stehen auch Unicode Zeichen, hier ein Beispiel:

...<Spalte>Testn&#x00e4;me</Spalte><Spalte>Test&#x00fc;</Spalte><Spalte>stra&#x00df;e</Spalte><Spalte>33333</Spalte>...

Ich hab jetzt schon versucht beim Einlesen jegliche Encodings zu verwenden, aber das will alles nicht funktionieren. Ich denke in dem Fall müsste man die Unicode-Zeichen per .Replace() ersetzen, da die Unicode-zeichen nur in den Daten selbst vorkommen oder gibt es da eine Alternative?

Gruß

Maruu

27.02.2011 - 14:37 Uhr

Hallo,

ich bin zur Zeit auf der Suche nach einem Control mit dem ich HTML Emails erstellen kann.

Hintegrund ist folgender: Die C# WinForms Anwendung verwaltet unter anderem Adressen, bei bestimmten Ereignissen sollen dann an diese Adressen Emails verschickt werden. Wie diese Emails aussehen darf der Benutzer selbst bestimmen. Er sollte also nach möglichkeit einen WYSIWYG Editor angezeigt bekommen und dort im klassischen Word/Outlook Stil seine Email Schreiben und formatieren können. Das Control müsste dann diese Formatierte Email als HTML-Code ausgeben können, nach Möglichkeit in einer HTML Version die von den meisten Emailclients gelesen werden kann (hier gibt es ja oftmals Probleme). Das Versenden des HTML-Codes übernehme ich dann wieder im Programm. Daher wäre es nur wichtig das HTML-Code geladen, bearbeitet und wieder geschrieben werden kann. Optimal wäre natürlich die Unterstützung von Bildern und Tabellen im HTML-Code.

Gibt es ein solches Control und wenn ja wo finde ich es. Es darf auch gerne etwas kosten das wäre nicht das Problem.

Gruß

Maruu

06.01.2011 - 12:46 Uhr

Hallo,

ja ich habe es bereits gelöst auf eine etwas andere Weiße, ich Zeichne den Text und den Hintergrund selbst im OnDraw Ereignis mit:


            Font tmpFont = e.Node.NodeFont != null ? e.Node.NodeFont : e.Node.TreeView.Font;
            Size tmpSize = TextRenderer.MeasureText(e.Node.Text, tmpFont);
            Rectangle tmpRectangle = new Rectangle(e.Bounds.X - 1, e.Bounds.Y, tmpSize.Width + 2, e.Bounds.Height);
            Color tmpForegroundColor = e.Node.ForeColor;
            if (tmpForegroundColor == Color.Empty) tmpForegroundColor = e.Node.TreeView.ForeColor;
            // Have to indicate focus somehow, how about yellow foreground text?
            if (e.Node == e.Node.TreeView.SelectedNode)
            {
                tmpForegroundColor = Color.Black;
                if ((e.State & TreeNodeStates.Focused) != 0)
                    tmpForegroundColor = Color.Black;
            }
            Color tmpBackroundColor = e.Node.BackColor;
            if (tmpBackroundColor == Color.Empty) tmpBackroundColor = e.Node.TreeView.BackColor;
            if (e.Node == e.Node.TreeView.SelectedNode) tmpBackroundColor = Color.FromArgb(181, 207, 112);
            SolidBrush bbr = new SolidBrush(tmpBackroundColor);
            e.Graphics.FillRectangle(bbr, tmpRectangle);
            TextRenderer.DrawText(e.Graphics, e.Node.Text, tmpFont, tmpRectangle,
                        tmpForegroundColor, TextFormatFlags.VerticalCenter);
            bbr.Dispose();
            tmpFont.Dispose();

Gruß

Maruu

06.01.2011 - 10:47 Uhr

Hallo,

ich habe ein TreeView und möchte die Hintergrundfarbe des selektierten Knotens ändern. Standardmäßig ist die bei mir blau, ich würde aber gern rot haben. Folgendes hab ich mir überlegt, ich abonniere das AfterSelect Ereignis und setze die BackColor des aktuell selektierten Knotens auf rot. Den zuletzt selektierten Knoten habe ich mir gemerkt und setze diesen wieder zurück auf transparent:


TreeNode mLastSelectedNode = null;

void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
     if (mLastSelectedNode != null)
           mLastSelectedNode.BackColor = Color.Transparent;

     if (treeView1.SelectedNode != null)
     {
           treeView1.SelectedNode.BackColor = Color.Red;

           mLastSelectedNode = treeView1.SelectedNode;
     }
}


Aber irgendwie funktioniert das nicht, der selektierte Knoten wird einfach nicht rot. Mach ich irgendetwas falsch?

Gruß

Maruu

15.10.2010 - 14:33 Uhr

Hallo,

ich habe eine komplexere c#-Anwendung entwickelt die leider beim start als normaler Benutzer abschmiert. Führe ich die Anwendung als Admin aus geht es ohne Probleme. Nun ist die Frage woran das liegt. So wie ich das gelesen hab kann ich Visual Studio nur als Admin starten, also kann ich hier nicht im Debugmodus testen wo das Problem liegt. Gibt es eine Möglichkeit herauszufinden woran es liegt, das meine Anwendung Adminrechte benötigt? Kann ich in VisualStudio einstellen das die ANwendung als Standarduser ausgeführt wird?

Gruß

Maruu

06.09.2010 - 08:43 Uhr

Hi,

hatte gerade das gleiche Problem, ich wollte auch das CellValueChanged abfangen sobald sich in einer CheckBox im DataGridView der Wert geändert hat. Das Event wurde aber nicht sauber (nur sporadisch) geworfen.

Folgende Lösung hab ich gefunden:

Neben dem CellValueChanged muss man auch das Event CurrentCellDirtyStateChanged vom DataGridView abfangen. In dem Eventhandler prüft man dann ob die CurrentCell des DataGridViews vom Typ bool ist und in diesem fall ruft man die Methode CommitEdit mit dem Wert Commit auf. Das wars! Wenn das gemacht ist wird auch das CellValueChanged richtig bei jeder Änderung in einer CheckBox aufgerufen.

Hier noch ein Beispiel des EventHandlers:


void DataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
      if (this.CurrentCell != null && this.CurrentCell.ValueType == typeof(bool))
          this.CommitEdit(DataGridViewDataErrorContexts.Commit);
}

Gruß

Maruu

19.08.2010 - 19:58 Uhr

Ok das Geheimnis hat sich etwas gelüftet. Die Eigenschaft DropDownStyle macht das auch im Designer das Bild 2 wie Bild 3 aussieht. Dann passt es wieder. Danke für die Hilfe.

Gruß

Maruu

19.08.2010 - 19:25 Uhr

Ich hab mal die Farbeinstellungen meines Bildschirms resettet, jetzt is es schon um einiges besser, aber 100% zufrieden bin ich irgendwie immer noch nicht.

Ich hab mal noch ein Bild angehängt, ganz links sieht man wie die ComboBox früher aussah, in der Mitte wie sie im VisualStudio Designer aussieht und rechts wie es aussieht wenn ich mein Programnm kompiliere und starte. Strange!

Gruß

Maruu

19.08.2010 - 19:06 Uhr

Wenn man das klassische Windows-Design gewohnt ist, bei dem das UserControl deutlich grauer ist, dann ist das schon schwer zu erkennen. Naja werd ich wohl mit leben müssen.

Gruß

Maruu

19.08.2010 - 18:43 Uhr

Das könnte sein, ich hab mal einen Screenshot von Visual Studio und daneben vond er Designeinstellung gemacht. Ich nutze das Basis Win 7 Aero Design. Gibts vielleicht ne Empfehlung für ein anderes?

Gruß

Maruu

19.08.2010 - 17:51 Uhr

Hallo,

bisher habe ich imme rmit Visual Studio 2008 gearbeitet. Jetzt bin ich auf Visual Studio 2010 Express umgestiegen und hab grad ein neues Benutzersteuerelement (UserControl) hinzugefügt. Darauf hab ich eine ComboBox gelegt. Im Designer wird mir das UserControl in einem ganz hellen Beige und die Combo-Box in weiß mit ganz schwach sichtbaren rändern angezeigt. Die beiden kann man kaum voneinander unterscheiden. Ist das nur bei mir so oder is das generell so das der Kontrast da schlecht ist, bzw man die Controls schlecht erkennt?

Gruß

Maruu

09.06.2010 - 10:23 Uhr

Hallo,

ich bin gerade dabei in C# Inhalte von einem Webserver abzurufen. Dabei rufe ich eine PHP-Seite auf die die Ergebnisse GZip-Komprimiert zurückliefert. Das ganze funktioniert auch schon soweit:



///Ermittlung der länge des Streams durch kopieren des Streams in einen
///MemoryStream
Stream tmpStream = tmpWebResponse.GetResponseStream();
MemoryStream tmpMemoryStream = new MemoryStream();
byte[] tmpStreamBuffer = new byte[2048]; 

int bytesRead = 0; 
do 
{ 
    bytesRead = tmpStream.Read(tmpStreamBuffer, 0, tmpStreamBuffer.Length); 
    tmpMemoryStream.Write(tmpStreamBuffer, 0, bytesRead); 
} while (bytesRead != 0); 

tmpStream.Close(); 
tmpStream.Dispose(); 
tmpStream = null; 

tmpMemoryStream.Position = 0;
var buffer = new byte[ tmpMemoryStream.Length*9 ];

///Dekomprimieren der Daten
using( var gZipStream = new GZipStream( tmpMemoryStream, CompressionMode.Decompress ) )
{
    gZipStream.Read( buffer, 0, buffer.Length );
}

string tmpAntwort = Encoding.UTF8.GetString( buffer );


Was ich oben mache ist folgendes:
Als erstes kopier ich den Stream der von WebResponse zurück kommt in einen MemoryStream um die Länge des Streams zu ermitteln, dies liefert nämlich der Stream der direkt von WebResponse kommt leider nicht. Danach dekomprimiere ich den GZip-Stream. Dabei werden die Daten in einen Buffer geschrieben. Und genau hier ist das Problem. Bisher nehme ich an das der Buffer (also die Dekomprimierten Daten) eine Länge 9*Komprimierte Daten haben. Aber das ist reine Vermutung. Wie finde ich raus welche Länge der Buffer wirklich haben muss. Kann ich irgendwie aus der Länge der komprimierten Daten ableiten wie lange die dekomprimierten Daten maximal sein können?

Gruß

Maruu

01.01.2010 - 14:16 Uhr

Die von Dir angefügten Punkte stimmen. Ich denke da hat einfach jeder seine Vorlieben und muss das nutzen was für Ihn besser passt. Ich hab früher die Daten auch per Reflection gespeichert, bin aber davon abgekommen da es für mich auf Dauer unpraktikabel war. Wie gesagt es kann manchmal passen, manchmal auch nicht.

Zum Thema DB. Wenn man eine verwendet die erst installiert werden muss dann sind das tatsächlich zusätzliche Fehlerquellen. Ich verwende aber den SQL Compact Server von MS. Der ist kostenlos und es bedarf keinerlei Installation. Ich muss lediglich 3-4 Dll's einbinden und das war's. Bisher hatte ich damit noch keine Probleme.

Gruß

Maruu

01.01.2010 - 12:10 Uhr

Naja wenn ich sensible Daten darin speicher, dann sollte die der Benutzer diese nicht sehen. Wenn ich z.B. eine Benutzerverwaltung in meinem Programm hab dann speicher ich Benutzernamen und Passworter (als Hash) in der DB. Dort kammt man (so leicht) nicht hin. In ner XML-Datei sieht man zumindest die Benutzernamen ohne Probleme. Ich weiß man kann XML auch verschlüsseln, aber da fängt es für mich schon wieder an kompliziert zu werden und mir fehlt der Mehrwert.

Zum Thema eigene Klasse und mit Reflection in XML wandeln. Das ist auch eine Möglichkeit. Nur hab ich hier ähnliche Probleme wie mit der app.config. Wenn sich an der Struktur meiner Reflection-Klasse etwas ändert, muss ich erst die Werte aus der alten Klasse auslesen, in eine neue Klasse schreiben und dann wieder das XML-schreiben. Außerdem muss ich per Reflection genauso verschiedene Datentypen behandeln, string, int, Listen usw. Gewonnen hab ich da gegenüber meiner Datenbank-Lösung nicht wirklich was.

Gruß

Maruu

31.12.2009 - 11:18 Uhr

Die app.config is ja ganz nett, aber für mich hat sie einige Nachteile. Die Struktur meiner Datenbank ändert sich ab und zu mal. Es kommen neue Anforderungen also auch andere Spalten usw. Dies geschieht per Online-Update. Eine app.config zu ändern ist wirklich unschön, da es XML ist. Bei einer DB erstell ich 2-3 SQL-Statements und die Sache ist gegessen. Auserdem sehen Endbenutzer nicht ohne weiteres den Inhalt der Tabellen, bei einer App.config reicht ein handelsüblicher Editor um den kompletten Inhalt anzuzeigen.

Für Variable Daten wie z.B. einen Connectionstring kann eine app.config die passende Lösung sein. Ich bin jedoch der Meinung das sie für viele Dinge nicht optimal ist.

Gruß

Maruu

31.12.2009 - 11:02 Uhr

Ich erklär ganz kurz nochmal den Ansatz. Es sollen Programmeinstellungen gespeichert werden. Wie oben geschrieben hatte ich die Methode stark vereinfacht um es hier zu demonstrieren, hier etwas ausführlicher


public class AppData<T> where T : string, int, List<string>
{
   public void Speichern(string pName, T pWert)
   {
     ...
   }

   public T Laden(pName)
   {
      ...
   }

}

Mit diesem Ansatz hab ich nun eine Klasse mit der ich Einstellungen Laden und Speichern kann. Dabei kann ich über die Constraints (where T : string, int, List<string>) festlegen welche Datentypen gespeichert werden können und nur diese Datentypen muss ich dann in der Speichern- und Laden-Methode behandeln. Gespeichert wird in eine SQL CE Datenbank. Vorteil ist das ich das Speichern/Laden ganz leicht um einen weiteren Datentyp erweitern kann ohne großen Aufwand.

Mein Problem hat aber herbivore gelöst, ich muss erst auf object casten und dann auf T. Ich hatte immer versucht direkt die Liste auf T zu casten was leider nicht geht, so dieht also die Lösung aus:

return (T)((object)tmpListe);

Vielen Dank

Gruß

Maruu

31.12.2009 - 01:25 Uhr

Hallo,

ich will mittels Generic Methoden eine Speichern- und Laden- Methode für belibige Datentypen realisieren. Das Speichern klappt soweit auch problemlos, nur beim Laden hab ich noch meine Probleme. Folgende Methode will ich dafür verwenden (hab die Methode vereinfacht um es besser zu veranschaulichen):



private T LadeEinstellung<T>()
{  
   List<string> tmpListe = new List<string>(){"a","b","c"};
   
   if(typeof(T) == typeof(List<string>))
      return tmpListe;
   else
      return default(T);
}


Soweit meine Methode, beispielhaft erstelle ich eine Liste die mit a,b,c gefüllt wird.
Wenn der Generic T eine string-Liste ist dann soll meine Liste auch zurückgegeben werden, doch so wie ich das oben machen will mit "return tmpListe;" funktioniert das leider nicht. Ich muss vorher die Liste vom Typ List<string> in T konvertieren. Nur wie konvertiere ich einen Typ in einen Generic T?

Gruß

Maruu

27.10.2009 - 08:08 Uhr

Hallo,

jap herbivore hat recht, ich bin nicht auf der Suche nach ner einfachen Textersetzung, dafür könnte ich tatsächlich string.Replace oder Regex nehmen. Vielmehr such ich ein Control das mir die Variablen geschützt darstellt und bei dem ich evtl. zu den variablen noch optionen angeben kann, wie z.B. die maximale Länge, das alle Buchstabe groß/kleingeschrieben sind o.ä.
Wir haben schon versucht so etwas mit einer RichTextbox zu basteln, aber das wird recht schnell unschön.

Gruß

Maruu

26.10.2009 - 16:27 Uhr

Hallo,

ich bin auf der Suche nach einem Editor den ich dem benutzer zur Verfügung stellen kann um Texte aus Variablen zusammen setzen zu lassen, wie es z.B. in einem Serienbrief bei Word möglich ist:

Sehr geehrte(r) #ANREDE# #NACHNAME#,

Ihre Bestellung mit der BestellNr #BESTELLNR# ist soeben versendet worden.
....

Der Benutzer kann sich also den Text selbst schreiben und Variablen einfügen die später ersetzt werden sollen.

Gibt es so etwas schon? Ich weiß ich könnte auch eine mehrzeilige Textbox nehmen und selbst eine Ersetzung machen aber es wäre schön wenn die Variablen wie #NACHNAME# geschützt wären so das diese nicht editiert werden könnten. Eine Längenbegrenzung pro Variable und ähnliches wären natürlich sehr schöne Features.

Gruß

Maruu

12.10.2009 - 13:31 Uhr

Danke für die Info. ConnectionStrings (also in dem Fall CSV über OleDb) und Codeproject sind mir gut bekannt. Das Problem ist bei OleDB das ich nur lesen kann, bzw das Schreiben sehr kompliziert/unschön ist und bei Codeproject hab ich keine Projekt gefunden bei dem ich CSV Dateien einlesen UND schreiben kann von dem das Format beim Einlesen nicht bekannt ist.

Deswegen hatte ich auf Tipps gehofft von Bibliotheken die bereits bei Anderen im Einsatz sind und gut funktionieren. Wisst Ihr da was?

Gruß

Maruu

12.10.2009 - 09:24 Uhr

Hallo,

nachdem ich die Suche bemüht aber leider nichts passendes gefunden habe, versuche ich es auf diesem Weg. Ich bin auf der Suche nach einem CSV Reader/Writer. Unser Tool soll so konfiguriert werden können das beliebige CSV Dateien engelesen werden können und die intern auf eine Objektstruktur gemapped werden. Das Mapping setze ich dann selber im Code um ich benötige nur einen CSV Reader der mir CSV Dateien sauber einliest. Ebenso soll es später möglich sein die internen Objekte wieder in eine CSV Datei zu schreiben. Da ich das Rad nicht neu erfinden will (CSV Dateien mit und ohne Überschriften, Delemitter, usw.) wäre ich über einen Tipp für einen guten CSV Reader/Writer für C# sehr dankbar.

Gruß

Maruu

PS: Das einzige was ich gefunden hab ist: http://code.google.com/p/csv-reader-and-writer/ und Linq2CSV aber Linq2CSV benötigt meines Wissens nach schon vor dem Einlesen die Struktur der CSV Datei in form einer Klasse