Laden...

Forenbeiträge von DFDotNet Ingesamt 201 Beiträge

12.11.2008 - 14:25 Uhr

hat das noch nie jemand gehabt?
wow, wie hab ich das denn gemacht ? 😉
hab grad sogar das framework sdk neu installiert und der fehler kommt immer noch.
super sache, ich kann mein projekt nicht mehr kompilieren...

12.11.2008 - 12:19 Uhr

hallo,

ich kann auch winmerge empfehlen. arbeite seit 1 halben jahr damit und bin recht zufrieden

12.11.2008 - 12:12 Uhr

Hallo,

ich habe vorhin ein bisschen in der Systemsteuerung rumgespielt und .net-Framework 2.0 neu installiert.
Seitdem bekomme ich beim Erstellen einen Merkwürdigen Fehler (siehe Bild)

Weiß jemend was es damit auf sich hat?!?

11.11.2008 - 08:39 Uhr

HAllo,

danke für die Antworten. Hat mir geholfen.
Ich benutze jetzt keine PictureBox um das Bild anzuzeigen, sondern ein Panel mit dem Bild als BackgroundImage. Davor sind die Labels transparent.
Die ProgressBar unterstützt leider keine Transparenz, darum habe ich grade mal auf codeproject nach anderen ProgressBars gesucht, da gibt es schon ein paar ganz gute Controls glaube ich.

Danke!

11.11.2008 - 07:49 Uhr

Hallo zusammen,

ich habe folgendes Problem, in der Suche habe ich nichts passendes gefunden:

Ich habe eine PictureBox, in der ganz einfach ein png-File angezeigt wird.
Darüber möchte ich jetzt weiter Elemente legen (eine ProgressBar und mehrere Labels).
Obwohl ich die BackColor der Controls auf Transparent gesetzt habe, werden sie immer mit einem häßlichen rechteckigen Hintergrund (in der Hintergruindfarbe der Form) gezeichnet.
Gibt es eine Möglichkeit die Labels und ProgressBars so anzuzeigen, dass man das Bild der PictureBox dadurch sieht?

Danke!

22.10.2008 - 13:55 Uhr

Oh man! Wie einfach! 😉 Danke dir !

22.10.2008 - 13:52 Uhr

Hallo zusammen,

kann mir jemand sagen, wie ich es hinbekomme, dass beim Klick auf ein LinkLabel eine URL im >Standard<-Browser geöffnet wird?
Danke!

16.10.2008 - 12:47 Uhr

Hallo zusammen,

ich suche nach einer Möglichkeit, bei einer Form in der Windows-Taskbar einen anderen text anzuzeigen, als in der Titelleiste der Form.
über Form.Text werden ja immer beide geändert.
In der Titelleiste könnte aber z.B. der Name des aktuell geöffneten Projektes mit angezeigt werden, in der Taskbar soll aber trotzdem nur der einfache Programmname erscheinen.
Geht das?!

MfG

13.10.2008 - 14:40 Uhr

hey, damit komme ich leider auch nicht weiter.
ist es wirklich so, dass das TabControl keine Transparenz unterstützt, wenn der Style "FlatButtons" ausgewählt wurde?!

13.10.2008 - 14:37 Uhr

das geht leider nicht, da ich nicht der einzige bin, der an diesem projekt arbeitet. aber ich habe das problem gelöst. mann muss nur die SLN-Datei mit einem Texteditor öffnen und die VS-Versionsnummer von 10.00 auf 9.00 ändern, schon läßt sich die Solution wieder mit VS 2005 öffnen

13.10.2008 - 11:25 Uhr

Hallo zusammen,

ich muss mit Visual C# 2005 Express eine Solution öffnen, sie in Visual C# 2008 erstellt wurde. Da kommt allerdings die Meldung "Die Projektmappendatei wurde mit einer neueren Version der Anwendung erstellt und kann nciht geöffnet werden."
Gibt es eine Möglichkeit, ein 2008-Projekt mit der 2005-Version zu öffnen?!?
Danke!

10.10.2008 - 09:39 Uhr

Hallo zusammen,

ich möchte ein transparentes TabControl in ein UserControl einfügen, das ist aja auch generell kein Problem, ich setzte einfach die BackColor-Eigenschaft aller ATbPages auf Transparent. Aber jetzt möchte ich das TabControl mit dem Style "FlatButtons" darstellen lassen. Sobald ich die Appearance-Eigenschaft auf Buttons oder Flatuttons umstelle, ist das TabControl nciht mehr transparent. Was kann ich dagegen tun? Unterstützt dieser Style keine transparenz!?

MfG

27.08.2008 - 14:56 Uhr

Hallo zusammen,

ich habe ein Problem mit den Key-Events.
Ich habe in einer GUI zwei Controls. Links ein normales Control, rechts ein UserControl mit textboxen drin usw. Für das linke registriere ich mir ein Key-Pressed-event. Wenn ich die Leertaste drücke passiert etwas im linken Control (also da, wo das Event empfangen wurde). Wenn ich Enter drücke, wechselt der Focus auf das rechte Control
Wenn ich im linken 'Enter' drücke geht der fokus in das rechte Control über:

rightControl.Focus()

und wird dann per Methodenaufruf in eine der Textboxen gegeben:

public void setFocusToTextbox()

Wird dann im rechten Control ein Button geklickt, geht der Fokus wieder auf das linke Control über:

leftControl.Focus()

Danach tritt das eigentliche Problem auf:
Im linken Control kommt des KeyPressed-Event nicht mehr für die 'Enter'-Taste, aber noch für alle anderen Tasten! Die funktion mit der Leertaste funktioniert zum Beispiel noch, aber wenn ich 'Enter' drücke, passiert nichts!
Wie kann das sein? Hat jemand so ein Problem schonmal gehabt oder weiß eine Lösung?!

Vielen Dank im vorraus!

MfG

dominik

29.07.2008 - 15:22 Uhr

danke, danke.
habe das jetzt so gelöst:

        private bool CopyFiles()
        {
            bool result = true;

            try
            {
                string[] FilesToCopy = Directory.GetFiles(SourceDir, "*", SearchOption.AllDirectories);

                foreach (string src in FilesToCopy)
                {
                    string relativePath = src.Substring(SourceDir.Length + 1, src.Length - SourceDir.Length - 1);
                    string dst = Path.Combine(DestinationDir, relativePath);
                    DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(dst));
                    if (!di.Exists)
                    {
                        Directory.CreateDirectory(Path.GetDirectoryName(dst));
                    }
                    File.Copy(src, dst, true);
                }
            }
            catch (Exception) { result = false; }
            return result;
        }
29.07.2008 - 15:02 Uhr

Hallo zusammen,

ich suche nach einer Methode, die ALLE Dateien in einem Verzeichnis und ALLE Unterverzeichnisse und die darin enthaltenen Dateien in ein angegebenes Verzeichnis kopiert. Gibt es so was schon in System.IO irgendwo, oder muss ich das über Umwege lösen?

Vielen Dank!

15.07.2008 - 08:59 Uhr

hallo,

vielen dank. es hat geholfen! die .user und bin/obj hatte ich auch schon gelöscht. aber es scheint an der .suo-Datei gelegen zu haben.
VIELEN DANK, ich kann wieder arbeiten 😁

15.07.2008 - 08:14 Uhr

Hallo zusammen,

ich habe ein Problem mit ein paar (4) breakpoints in Visual C# 2005 Express, die sich einfach nicht mehr entfernen lassen:
Wenn ich die Breakpoints entferne, erscheinen sie wundersamerweise beim nächsten Debug-Durchlauf wieder in der selben Zeile. Ändere ich den Code, bleiben sie immer in der Zeile mit der selben Nummer stehen bzw erscheinen dort wieder.
Ich habe sogar schon die komplette Klasse gelöscht und den Quellcode in eine neue Klasse mit gleichem Namen eingefügt... kein erfolg. Die Breakpoints kommen einfach immer wieder!
hat schon mal jemnd so ein problem gehabt? alle anderen breakpoints kann ich ganz normal setzen und löschen und dann bleiben sie auch weg, aber diese 4 scheinen sehr hartnäckig zu sein...
vielleicht kann mir ja jemand einen tipp geben, wie ich sie los werde.

Vielen Dank!

03.07.2008 - 15:24 Uhr

Danke für die Antworten. hatte leider keine Zeit eher zu antworten. Werde die Vorschläge alle mal durchprobieren in den nächsten Tagen.
mfg

26.06.2008 - 11:30 Uhr

Hallo zusammen,

ich baue mir grade ein UserControl zur Anzeige eines Kurvenverlaufes.
Man muss in dem Control Horizontal und Vertikal scrollen können.
Ich habe das jetzt erstmal gelöst, indem ich eine vscrollbar (mit DOCK = right) und eine hscrollbar (mit DOCK = Bottom) eingefügt ahbe deren Events ich bahandle um das scrolen zu realisieren. mein Problem ist jetzt, dass die Scrollbars durch die DOCK-Eigenschaften immer bis in die Ecke unten rechts gehen, was bei anderen Anwendungen nicht der Fall ist (siehe Bild). Hat jeman einen Guten Vorschlag, wie ich das am elegantesten lösen kann, so dass das ändern der Größe des Controls trotzdem noch so gut funktioniert wie bisher?
danke!

23.05.2008 - 14:43 Uhr

Super, das hat mir sehr weitergeholfen!

Ich löse das jetzt mit einzelnen "DatagridViewComboBoxCell"'s
Leider sind die Events in diesen etwas umständlich, aber ich glaube ich bekomme es jetzt irgendwie hin (siehe Bild)
Vielen Dank nochmal!

Edit: achso: eine Frage habe ich noch: kann man beim Sortieren des Datagrids einzelne spalten außen vor lassen ? denn sonst sortiert er mir die ComboBox-Zeile ja mit ein, und das will ich natürlich nicht.

23.05.2008 - 12:01 Uhr

Hallo zusammen.
Ich habe folgendes Problem:
Ich möchte eine recht große Tabelle in einer Windows.Form darstellen. Die Tabelle hat ca.10 Spalten und ca. 270 Zeilen. Eigentlich kein Problem. Aber ich möchte zusätzlich über manchen Spalten eine Auswahlbox (ComboBox) darstellen, mit der die Anzahl der Angezeigten Zeilen eingeschränkt werden kann. (siehe Bild aus Web-Browser im Anhang). D.h. diese Boxen sollen über der jeweiligen Spalte angezeigt werden.
Wenn ich das gnaze mit einem DataGridView löse bekomme ich keine ComboBoxen in die Spalten hinein, oder? Ich habe es auch schon über ein TableLayoutPanel probiert, da ist aber das Problem, dass ich dann in jede Zelle ein Label mit dem Wert einfügen muss, was zu extrem schlechter Performance beim initialisiern und beim Scrollen führt.
Hat jeman eine Idee, wie man so etwas am elegenatesten lösen kann?
Danke!

MfG

Dominik

07.05.2008 - 08:39 Uhr

verwendetes Datenbanksystem: <XML, XSD>

Hallo,

ich habe eine Frage zu XSD-Schemata. Speziell zu key/keyref-Constraints:

Ich nutze key/keyref erfolgreich um zu überprüfen ob gewisse elemente auf die verwiesen wird, auch im dokument vorhanden und eindeutig sind. das funktioniert schon mal ganz gut.

ein problem habe ich jetzt allerdings mit leeren elmenten.

ein beispiel:

ich habe eine Liste mit nummern, z.b. 1,3,5,7

in einer zweiten liste stehen die nummern von 1-10 und weitere infos zu der jeweiligen nummer. also wird überprüft, ob die nummern, die in der ersten liste stehen auch in der referenzliste vorhanden sind. steht jetzt in der ersten liste allerdings ein leerer wert ( <Nr></Nr> oder <Nr/> ) so wird das xml-dokument nicht validiert. kann man die key/keyref-constraints so modifizieren, dass sie leere elemente ignorieren?wenn ja, wie?
danke im vorraus!
mfg
Dominik

28.03.2008 - 10:51 Uhr

verwendetes Datenbanksystem: <XML>

Hallo zusammen,

ich habe eine Frage zu einer XML-Schema-Funktion.
Folgende Funktion hätte ich gerne:

In einem XML-Dokument ( siehe Beispiel) sind verschiedene Elemente vorhanden, die jeweils mehrere Unterelemente enthalten können.
Das Beispieldokument enthält in den "Para"-Elementen in der Gruppe "Paras" Unterelemente mit der Bezeichnung "PTIndex" mit einem int-Wert.
Außerdem enthalten Die "Plaintext"-Elemente in der Gruppe "Plaintexts" ebenfalls ein Element Namens "PTIndex".
Bei der Validierung soll nun überprüft werden, ob zu jedem "Para"-Element das zugehörige "Plaintext"-Element vorhanden ist. ansonsten soll ein Validierungsfehler auftreten.
Sprich: zum 1."Para"-Element im Beispiel (PTIndex=1) ist das zugehörige "Plaintext"-Element vorhanden(PTIndex auch = 1). Zum 2. "Para"-Element (PTIndex = 4) ist jedoch kein passendes "Plaintext"-Element vorhanden => Hier soll ein Fehler auftreten!

======================================
Beispiel:
======================================


<?xml version="1.0" encoding="iso-8859-1"?>
<RootElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Schema.xsd">
 <Paras>
   <Para>
     <a/>
     <b/>
     <PTIndex>1</PTIndex>
   </Para>
   <Para>
     <a/>
     <b/>
     <PTIndex>4</PTIndex>
   </Para>
 </Paras>
 <PlainTexts>
  <PlainText>
     <c/>
     <d/>
     <PTIndex>1</PTIndex>
  </PlainText>
  <PlainText>
     <c/>
     <d/>
     <PTIndex>2</PTIndex>
  <PlainText>
 </PlainTexts>
</RootElement>

====================================

Gibt es mit XSD-Schemata eine Möglichkeit dies zu realisieren? Wenn ja, welche?

Vielen Dank im vorraus!

MfG

Dominik

28.03.2008 - 09:58 Uhr

Ok, dann freu ich mich eben über die Exceptions 😉

und wie macht der SWF.Timer das? Er ruft ja auch eine Methode in regelmäßigen abständen auf.also werden da ja bestimmt auhc irgendwelche Threads beteiligt sein.warum tritt die Exception dann in diesem Fall nicht auf?

28.03.2008 - 09:04 Uhr

Hallo nochmal.

Ich habe das Problem jetzt gelöst. Der Befehl bei dem die Ausnahme auftrat stand in einer Methode, die von einem System.Threading.Timer zyklisch aufgerufen wurde. Diesen Timer habe ich jetzt durch einen System.Windows.Forms.Timer ersetzt und siehe da - es funktionert! Mich wundert nur trotzdem immer noch, dass die Exception NUR beim debuggen aufgetreten ist und der Befehl ansonsten ganz normal ausgeführt wurde.

27.03.2008 - 13:15 Uhr

Hallo, danke für die antwort, aber ich glaube, das Problem liegt wo anders. Denn der Fehler tritt NUR beim debuggen auf. das wundert mich besonders. An das control, welches die Exception wirft komme ich nicht ran, das ist Code von dritten, aber der wird zu 99,9% auch korrekt sein, denn beim normalen ausführen des Programmes läuft ja schliesslich alles einwandfrei.

27.03.2008 - 11:35 Uhr

Hallo,

ich habe ein Problem mit einer Exception, die IMMER auftritt, wenn ich eine Komponente debugge. Bei normaler Auführung läuft das Programm einwandfrei, aber ich kann es aufgrund dieser Exception nicht mehr debuggen, was sehr problematisch ist, da ich auch andere Teile des Projektes noch ändern und debuggen muss. folgende Exception tritt beim debuggen auf, vielleicht kann mir ja jemand einen Tipp geben, was ich dagegen tun kann:

Exception:
===========

Type: System.Reflection.TargetInvocationException

Message: Ein Aufrufziel hat einen Ausnahmefehler verursacht.

Inner Exception:
===================

Type: System.InvalidOperationException

Message:

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

erstellt wurde.

Vielen Dank im vorraus!

MfG

13.03.2008 - 12:17 Uhr

Hallo,

gibt es eine Möglichkeit Text in Windows-Fomrs-Elementen, insbesondere in labels hoch/tiefgestellt darzustellen? Wenn ich beispielsweise eine physikalische Größe anzeigen möchte, wäre das nützlich um Indizes an die Variablen anzuhängen.
Ich habe das mal ausprobiert mit einer richTextBox, aber da kann ich einzelne Buchstaben nur im Code tifer stellen und nicht im Designer und das macht das ganze sehr aufwendig.

MfG

12.03.2008 - 11:54 Uhr

Hallo zusammen,

gibt es eine Einstellung in VC#2005, mit der man verhinder kann, dass der vom Forms-Designer generierte Code in einer partiellen Klasse abgelegt wird?
Vielen Dank im vorraus!

07.11.2007 - 07:26 Uhr

ok, sorry!
und danke für die hgilfe. ich regel das jetzt per generische LIST.
mfg

06.11.2007 - 11:33 Uhr

Hallo, ich habe mal eine grundsätzliche Frage: Ist es möglich eine Methode in einem Thread zu starten und ihr mehrere Parameter zu übergeben?
Mit ParameterizedThreadStart geht es ja nur mit einem einzigen Objekt:


public bool Methode1()
{
  String s = new String("myString");
  Thread myThread=new Thread(new ParameterizedThreadStart(methode2));
  myThread.Start(s);
  return true;
}

private void methode2(object o)
{
 //hier soll beispielsweise irgendwas mit dem String gemacht werden
}

So kann ich ja immerhin ein Objekt übergeben, aber was ist, wenn ich z.B. 2 Strings an die Methode bergeben möchte?!? Geht das übehaupt? Wenn nicht, was für ein Objekt ist am sinnvollsten um die Parameter zusammenzufassen ? ArrayList, Collection oder was auch immer?
Danke!

05.11.2007 - 10:01 Uhr

Hallo,

danke für die Antworten.
Den ersten Ansatz von Rainbird habe ich mittlerweile acuh schon ausprobiet und das scheint uasreichend zu sein. Also ich schriebe user-controls in win.forms und registriere sia als activeXX.
funktioniert einwandfrei in der Rahmenanwendung.
umstellen auf .NET kann ich diese nicht, da sie von einem drittanbieter kommt.

30.10.2007 - 13:34 Uhr

Hallo,

ich hoffe hier kann mir jemand weiterhelfen. In unmengen anderer Foren usw habe ich nichts dazu gefunden, was mir weitergeholffen hat.

Folgendes Problem:
Ich habe eine COM-Client-Anwendung, die über eine Methode in einer (von mir geschriebenen) DLL die ProgId eines ActiveX-Controls (ein User-Interface) abfragt und das ActiveX-Control dann verwenden will. Der zugriff der COM-Anwendung auf meine .NET-DLL funktioniert schon usw.
Mein Problem ist, dass ich in C# programmiere und mir daher nur Windows.Forms zur Verfügung stehen.
Wie muss ich vorgehen, um ein Windows.Form so zu veröffentlichen, dass es von der Anwendung sozusagen als ActiveX-Element behandelt werden kann ?
Mit anderen Worten: Wie implementiere ich ein ActiveX-Steuerelement in C#/.NET ?!?
Ich weiss, dass das nicht gerade einfach sein wird, aber ich habe leider keine andere Möglichekeit.

Vielen Dank im vorraus!

MfG

Dominik

23.10.2007 - 14:14 Uhr

HI.
Danke schonmal.
Was genau bewirkt denn dass Attribut "ClassInterface" da?

mfg

23.10.2007 - 13:28 Uhr

Hallo.
Ich habe ein Problem mit Com-Interoperation:
Ein COM-Client sucht in der Registry nach einer DLL, die bestimmte Kategorien (GUID) implementiert. Soll heissen in der Registry sollen unter HKCR/CLSID/(meineGUID)/Implemented Categories/
die Schlüssel mit den bestimmten GUID's eingetragen sein.
Die DLL soll eine Methode bool methodenName() enthalten, die von dem COMClient aufgerufen werden kann und ihm einen bool-Wert zurückgibt.
in .../InprocServer32/ soll die Zeichenfolge "TheadingModel" mit dem Wert "Apartment" stehen, wobei ich nicht genau weiss,was das bedeutet aber er muss da sein, das weiss ich. Und die "default"-Zeichenfolge in InprocServer32 soll den Pfad auf die dll selbst enthalten und nicht "mscoree.dll" oder so (das hatte ich da bisher immer komischerweise)
Naja und wichtig ist halt, dass das ganze COM-Sichtbar ist wie gesagt.
Wäre klasse, wenn mir da jemand helfen könnte!
Vielen Dank im voraus!

MfG
Dominik

01.10.2007 - 12:49 Uhr

verwendetes Datenbanksystem: <XML>

Hall nochmal!
Es ist zum verrücktwerden!
Ich bin grade dabei mit Xpath zu experimentieren. Dazu habe ich folgende Seite als Hilfe genommen:XPath-Test

es dreht sich um folgende XML-Datei:

<?xml version="1.0"?>
<FDT xmlns="x-schema:DTMInformationSchema.xml" xmlns:fdt="x-schema:FDTDataTypesSchema.xml" >  
	<DtmInfo>
		<FDTVersion major="1" minor="2" release="1" build="1"/>               
		<!--hier stehen noch ein paar knoten, hab ich der Übersichtlichkeit wegen entfernt...>
	</DtmInfo>
</FDT>


Gebe ich nun im XPath-Tester Beispielsweise ein: /*/DtmInfo

Selektiert er mir natürlich den "DtmInfo"-Knoten.
Aber in C# bekomme ich bei gleicher XPath-Abfrage eine Leeere XmlNodeList zurück:


XmlNodeList nodes = xdoc.SelectNodes("/*/DtmInfo"); //xdoc ist das XmlDocument.

Warum ist die NodeList da denn leer?! ich versteh' das alles nicht...

Danke im vorraus!

01.10.2007 - 08:44 Uhr

verwendetes Datenbanksystem: <XML>

Hallo,
ich habe folgendes XML-Dokument:


<?xml version="1.0" ?>
<FDT xmlns="x-schema:DTMCommunicationErrorSchema.xml"  xmlns:fdt="x-schema:FDTDataTypesSchema.xml">
	<fdt:CommunicationError communicationError="timeout" tag="myTag"/>
</FDT>

und daraus möchte ich jetzt den Text lesen, der hinter communicationError steht (also hier: "timeout"). Wie mache ich das am besten? Über XPath? Wenn ja, wie müsste die Abfrage aussehen?
Ich denke dass XPath schon sinnvoll wäre, da es auch wesentlich komplexere XML-Dateien gibt und man da anders wahrscheinlich kaum noch durch Navigieren kann.

28.09.2007 - 13:37 Uhr

Noch ein kleiner Zusatz:

ICh habe grad mal nachgesehen. In dem XmlElement gibts ja die Eigenschaften "prefix", "name" und "localname".

Die sehen nach der Initialisierung(s.o.) folgendermassen aus:

Prefix = "fdt"
Name = "fdt:CommunicationError"
LocalName = "CommunicationError"

Also hat er das als name schon drin, aber er schreibt ins xml-file wohl nur den localname und nicht das Prefix. warum? was muss ich tun, damit er mit xdoc.save("c:\filename.xml"); auch das Prefix fdt einfügt?!?

28.09.2007 - 11:30 Uhr

verwendetes Datenbanksystem: <XML>

Hallo. Ich will ein neues Element in ein XML-Dokument einfügen, dass folgendermaßen aussehen soll:


<fdt:CommunicationError communicationError="timeout" tag="meinTag"/>

Ich dachte, das ginge mit folgendem Code:


XmlElement error = xdoc.CreateElement("fdt:CommunicationError");//xdoc ist das XmlDocument
error.SetAttribute("communicationError", "timeout");
error.SetAttribute("tag", "meinTag");
elem1.AppendChild(error); //elem1 ist das übergeordnete Element.

Aber was dabei herauskommt ist:


<CommunicationError communicationError="timeout" tag="meinTag"/>

also ohne das "fdt" und den Doppelpunkt! Also verschluckt er irgendwo das Namespace-Prefix. Warum??
Wie mache ich das denn, dass das mit eingefügt wird?!?
Danke!

25.09.2007 - 14:52 Uhr

verwendetes Datenbanksystem: <XML>

Hallo!
Ich habe mit folgendem Code ein XMLDocument eingelesen und erfolgreich Validiert:


XmlTextReader tr = new XmlTextReader("c:\\xml\\XMLDokument1.xml");
XmlValidatingReader vr = new XmlValidatingReader(tr);
vr.ValidationType = ValidationType.XDR;
vr.Schemas.Add("xmlSchema1.xml", "c:\\xml\\xmlSchema1.xml");
vr.Schemas.Add("xmlSchema2.xml", "c:\\xml\\xmlSchema2.xml");
       
vr.ValidationEventHandler += new ValidationEventHandler(vr_ValidationEventHandler);
          
while (vr.Read()){}

Console.WriteLine("=======Validation komplett=========");

//Hier will ich jetzt nen String haben!//

Und später in der Methode will ich den Inhalt des XMLDocuments als String zurückgeben.
Wie bekomme ich jetzt den Inhalt des Dokuments aus dem XmlTextReader oder aus dem XmlValidatingReader als String.
Mit ToString() gehts leider nicht, wäre ja auch zu einfach...
Aus einem XmlDocument kann man den String ja mit OuterXml bekommen. Aber wie bekomme ich aus dem TextReader/ValidatingReader das XmlDocument? ich weiss nicht mehr weiter.
Wahrscheinlich ist es total simpel und ich komm einfach nicht drauf, weil ich schon seit 7 Uhr davor hänge...

Vielen Dank für eure Antworten!

07.09.2007 - 14:08 Uhr

hmm.wie mach ich das denn?
ich nehme mal an, da brauch' ich den sourcecode der dll, oder?
womit ich beim nächsten problem wäre... 8o 8o
gut das wochenende ist! X( X(

07.09.2007 - 11:52 Uhr

Hallo zusammen,

ich rufe aus einer C#-Anwendung eine dll auf (Methoden importiert mit DLllImport) und bei den meisten Aufrufen klappt das auch ganz gut.
Aber bei einem bestimmten Aufruf bekomme ich eine SEHException ("Eine externe Komponente hat eine Ausnahme ausgelöst").

Der ErrorCode (HRESULT) der Exception ist: -2147467259
In HEX konvertiert ist das: 80004005

Hat jemand schonmal ein ähnlcihes Problem gehabt?
Woher kann dieser Fehler kommen?
Mehr Informationen als den ErrorCode bekommt man aus der SEHException leider nicht heraus.

Danke!

MfG

Dominik

07.09.2007 - 07:57 Uhr

Ich vermute mal stark, dass du XDR meinst.

Korrekt!

Vielen Dank für deine Hilfe! Mit dem XmlValidatingReader funktioniert es einwandfrei! Ich dachte nur, der neue XmlReader hätte alle funktionen des alten XmlValidatingReader geerbt. Aber dann ist das ja anscheinend doch nicht der Fall, oder?

06.09.2007 - 13:22 Uhr

verwendetes Datenbanksystem: <XML>

Hallo,
ich habe folgendes Problem: Ich muss XML-Dateien anhand eines Schemas validieren. Allerdings sind die Schemata nicht xsd-Schemata, sondern im Microsoft-XML-Schema-Format geschrieben ( ich glaube das heist msxml(?) )
Das Problem ist nun, dass ich mit XmlReader nur xsd-Validierung durchführen kann (oder ?).
was für eine möglichkeit habe ich nun?
Warum unterstützt Microsoft unter .NET sein eigenes Schema-Format nicht ?!?
Wie würdet ihr jetzt vorgehen um die Daten zu validieren??
Vielen Dank!

05.09.2007 - 07:41 Uhr

verwendetes Datenbanksystem: <XML>

Hallo zusammen,

ich mache grade die ersten Versuche mit XML-Lesen/Screiben in C#. Ich möchte auf jeden Fall die DOM-Struktur nutzen.
Folgende Übung habe ich gemacht:
ich wollte ein bestimmtes vorgegebenes XML-Dokument in DOM nachbilden und dann auf die Festplatte schreiben.

Hier die XML-Daten:


<?xml version="1.0" standalone="yes"?>
<books>
  <book>
    <author>Carson</author>
    <price format="dollar">31.95</price>
    <pubdate>05.01.2001</pubdate>
  </book>
  <pubinfo>
    <publisher>MSPress</publisher>
    <state>WA</state>
  </pubinfo>
</books>

Und ich habe das wie folgt gelöst:


using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;

namespace XML_Test
{
    class Xml_Test
    {
        static void Main(string[] args)
        {
            FileStream fs = new FileStream("C:\\testXML.xml", FileMode.Create);
            XmlTextReader xr = new XmlTextReader(fs);
            
            XmlDocument xd = new XmlDocument();

            xd.AppendChild(xd.CreateXmlDeclaration("1.0", String.Empty, "yes"));
            xd.AppendChild(xd.CreateElement("books"));
            XmlNode root = xd.DocumentElement;

            XmlNode x = root.AppendChild(xd.CreateElement("book"));
            XmlElement y = (XmlElement) x.AppendChild(xd.CreateElement("author"));
            y.InnerText = "Carson";
            y = (XmlElement) x.AppendChild(xd.CreateElement("price"));
            y.InnerText="31.95";
            y.SetAttribute("format", "dollar");
            y = (XmlElement)x.AppendChild(xd.CreateElement("pubdate"));
            y.InnerText = "05.01.2001";
            x = root.AppendChild(xd.CreateElement("pubinfo"));
            y = (XmlElement)x.AppendChild(xd.CreateElement("publisher"));
            y.InnerText = "MSPress";
            y = (XmlElement)x.AppendChild(xd.CreateElement("state"));
            y.InnerText = "WA";

            xd.Save(fs);                 //Datei speichern
            xd.Save(Console.Out);  //XML auf Console ausgeben
            fs.Close();

      }
    }
}

Das klappt auch und ich erhalte ein testXML.xml mit genau den gewünschten Daten. Ist das der richtige Weg um so etwas zu machen, oder habe ich es mir im Programm da zu kompliziert gemacht?!?

Vielen Dank!

31.08.2007 - 13:42 Uhr

UND DIE LÖSUNG IST SO SIMPEL!!!

🙂 ich habs gerade rausgefunden:

[MarshalAs(UnmanagedType.BStr)] public String txt;

das ist die Zeile die den String in der structur anlegt. alles was fehlte war das "MarshalAs"-Attribut.

Trotzdem Danke für die Hilfe!

P.S.: @ Bart: das heisst bei mir auch nicht "property" ich wollt nur nicht den wirklichen Namen erwähnen, da es hier um einen Firmen-Eigenen kommunikationstreiber geht, den ich in meiner diplomarbeit verwende und ich niht weiss wie es da mit den rechten aussieht.danke für deine hilfe.

31.08.2007 - 12:08 Uhr

Hallo. Danke erstmal für die Antworten.

Zu allererst mal: Es ist keine gute Idee, einen Typen wie ein Schlüsselwort zu verwenden...

Was meinst du damit genau?!?

Wenn ich Dich richtig verstehe, dann versuchst Du irgendeine native DLL aufzurufen, die Dein struct (und insbesondere den String) <<füllt>> ?

Das stimmt genau. Es werden zuerst in einer Methode "setProperties" Daten geschrieben auch über so ein struct), die dann später mit "getProperties" wieder gelesen werden sollen.
Das schreiben funktioniert soweit ohne Exception und die int/long Werte können auch wieder gelesen werden und stimmen überein. Der String jedoch nicht.Wenn ich ihn als String deklariere, dann ist er entweder leer, oder es steht ein Herz als UnicodeZeichen drin. Warum auch immer.

Deinen Code habe ich getestet, allerdings bekomme ich damit folgende Exception:

System.TypeLoadException: Das Feld txt des Typs ConsoleApplication1.property kann nicht gemarshallt werden: Struktur- oder Klassenfelder können nicht vom Typ StringBuilder sein. Der gleiche Effekt wird normalerweise erreicht, wenn ein Zeichenfolgenfeld zu einer Zeichenfolge vorinitialisiert wird, deren Länge mit der entsprechenden Pufferlänge übereinstimmt.

Das bedeutet dann ja wahrscheinlich, dass ich in einem dll-aufruf kein StringBuilder benutzten darf/kann, oder?
Was heisst der Satz mit dem vorinitialisierten Zeichenfolgenfeld?!?

Meine Idee wäre eigentlich gewesen, eine Bytefolge(Byte[]) zu übergeben, die dem Aufbau des (von der dll erwarteten) VB6-strings gleicht. Allerdings weiss ich nicht genau, wie so ein VB6-String Bytemäßig aussieht. Wärte das nicht auch eine Lösungsmöglichkeit??

Vielen Dank!

30.08.2007 - 10:37 Uhr

hallo. entschuldigung nochmal. das sollte kein drängeln sein, sondern hauptsächlich eine entschuldigung 😉
danke schonmal für deine antwort. aber das hilft mir nur bedingt. jetzt weiss ich, dass der string 10byte+ seine eigene länge hat, aber ich weiss nicht, wie die bytes angeordnet sind.
wichtig ist, dass ich weiss, wo diese 10 zusätzl. bytes stehen und was in ihnen enthalten ist.
also z.b. dass 6 bytes längen-codierung vorm string stehen oder am ende ein 0x00 als ende-kennung oder wie auch immer.
danke!

30.08.2007 - 09:40 Uhr

Entschuldigung!
Aber die Frage ist noch immer aktuell 😉

30.08.2007 - 09:35 Uhr

Hallo.
Kann mir jemand sagen, wie ein VB-String aufgebaut ist? ich vermute er sieht von der Byte-Codierung her anders aus als ein C#-String oder?
Danke!