Textdatei in Form1.resx einlesen
-
Wie kann ich eine Resourcen-Textdatei einlesen? Also ich habe die Textdatei Xy in der Recourcendatei Form1.resx. Wie ich Textdateien einlese, die sich auf einem normalen Datenträger befinden, ist mir bekannt. Doch wie erstelle ich einen Zeiger auf die Resource?
-
Hat wirklich keiner eine Idee, wie man die Ressourcendatei einlesen kann?
Ich will halt, dass nur das Programm die Datei verändern kann.
-
Mit der "ResoruceManager"-Klasse ?
-
Das funktioniert nicht:
System::Resources::ResourceManager ^rm = gcnew System::Resources::ResourceManager("MeinProjektname.Form1", System::Reflection::Assembly::GetEntryAssembly()); String^ Dateiname = rm->GetString("Datei");
Dann hab' ich diese Funktion, die die Datei einlesen soll:
private: void LoadText(String^ datei) { try { String^ Lesen; StreamReader^ Datei = gcnew StreamReader(datei); while (Lesen = Datei->ReadToEnd()) { text = Zeile; } } catch(...) { MessageBox::Show ("Datei beschädigt"); this->Activate(); this->ActiveForm; this->Activate(); } }
Mir wird jetzt aber immer angezeigt: Datei beschädigt.
Ich find' den Fehler einfach nicht.
MfG
Mistkäfer
-
Poste doch mal den wichtigen Teil Deiner resx-Datei...
-
Wie soll ich den Teil posten? Da is halt ne Textdatei namens Datei drin.
-
Und wie heissen die Tags drum rum? Schau Dir mal die Datei in einem Texteditor an (Rechtsklick auf die resx-Datei in VS und "View Code")!
Und mit
rm->GetString("Datei");
solltest Du die Datei rausbekommen! WAS geht da nicht?
-
Das ist der Code meiner Form1.resx-Datei:
<?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <data name="Datei" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\..\..\..\..\..\..\Test.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value> </data> </root>
Bitteschön...
-
Und WAS geht jetzt nicht?
-
Wenn ich den Text versuche einzulesen, kommt eine Fehlermeldung. Die Fehlermeldung in der try/catch Methode, die ich eingebaut habe.
-
und die währe?, wenn sie aus einer Try Catch konstruktion kommt ist doch warscheinlich schon klar was los ist (Wenn du den richtigen Exception handler eingebaut hast)...