Laden...

Forenbeiträge von Wax Ingesamt 731 Beiträge

27.11.2006 - 15:11 Uhr

Hat wirklich niemand Erfahrung damit? 🙁

27.11.2006 - 14:36 Uhr

Hallöchen,

trotz langer Vorlesungen gähn zu diesem Thema, habe ich nun ein Problem mit meiner Softwareplanung. Ich habe schon das OOD (MVC-Prinzip) im Kopf und auch zum testen etwas im voraus entwickelt und nun stehe ich aber beim fertigstellen meines OOA´s auf dem Schlauch.

Falls ich in meinem Programm eine Datei öffnen möchte, dann geschieht dies indem meine View dem Controller sagt was zu machen ist. Der Controller ruft darauf hin entsprechende Model-Methoden auf.

Wie aber kann ich im OOA z.B. sagen, dass eine Datei(XML-Datei) geöffnet werden soll, damit ein neues Objekt angelegt werden kann, um es mit Daten aus der Datei zu füllen? Ich sollte das Controller bzw. Model-Objekt doch noch garnicht im OOA verwenden, oder? Das wäre meiner Meinung nach schon viel zu speziell und würde sich ja schon mit Gedanken der Implementierung beschäftigen.

Hmmm, weiß gerade net mehr weiter... 🤔

cya

15.11.2006 - 16:24 Uhr

Oh sorry, da hab ich das wohl als nicht wichtig angesehen und deswegen überlesen. Argh....

Dank euch

15.11.2006 - 16:16 Uhr

Halli hallo,

ich weiß es gibt im Forum schon jede Menge Threads über String.replace()-Probleme und ich habe sie mir auch angeschaut, doch leider brachte mich das nur noch mehr zum verzweifeln, denn ich weiß einfach nicht was daran falsch sein soll.
Also zu meinem Code:


String logFileName = DateTime.Now.ToString();
logFileName.Replace(".", "_");
logFileName.Replace(":", "_");

Die Original "logfileName"-Strings sehen folgendermaßen aus:

15.11.2006 16:10:31

Nur nach den replace()-Aufrufen sieht der String immer noch genau so aus. 🤔
Ich check net weshalb die Zeichen net ausgetauscht werden.

Kann mir bitte jemand helfen? 🙁

cya

15.11.2006 - 14:13 Uhr

Hallo Vitök,

so wie ich das sehe müsste dir die Funktion "string-length()" weiterhelfen. Das ganze musst Du dann nur noch per and-Operator zu einem logischen Vergleich verknüpfen.

Beispiel:

//Result[contains(text(),'323') and string-length() = 3]

Müsste eigentlich klappen.... hoffe ich zumindest 8)

14.11.2006 - 10:56 Uhr

Hört sich interessant an. Also meine Vorstellung sieht so aus:

Das Porgramm liegt z.B. im Ordner "C:\Lecture".
Die Schematas liegen im Ordner "C:\Lecture\XSD-Schema".

Der Benutzer startet dann die Anwendung "Lecture.exe" im Ordner "C:\Lecture".

Das aktuelle Arbeitsverzeichniss ist somit ja klar auf "C:\Lecture" gesetzt. Wie würdest Du nun im Code sagen, dass sich ein Schema im Unterverzeichnis "C:\Lecture\XSD-Schema" befindet? Weil wenn ich es zur Entwicklungszeit festlege, sieht die Verzeichnisstruktur ja noch anders aus als später. Verstehst Du was ich meine?

Bitte hab Rücksicht mit mir, ich arbeite mich gerade erst so richtig in .NET bzw. C# ein. 😁

edit: Die Application.StartupPath - Eigenschaft sieht so aus als könnte sie mir helfen. ^^

14.11.2006 - 10:43 Uhr

Das hört sich jetzt so an, als ob die Datei dann auch später jeweils in den Ordner kopiert werden würde, der vom Benutzer für seine XML-Instanz-Dateien angegeben wird. Oder sehe ich das falsch?

14.11.2006 - 09:53 Uhr

Hallo zusammen,

ich habe keine Ahnung weshalb es jetzt plötzlich funktioniert, doch das macht es. 😁

Allerdings gibt es nun ein weiteres Problem.....
Mein Debugger sagt mir, dass mein Prozess im "....\bin\debug" - Verzeichnis gestartet wird. Soweit ok. Ich möchte in meinem Programm aber ja gegen ein ganz bestimmtes XML-Schema validieren, welches immer lokal auf dem Rechner des Benutzers liegt.
Das Programm soll also nach fertigstellung nicht nur auf meinem Rechner laufen, sondern einfach kopiert werden können. Doch in welchen Ordner würde dann das XML-Schema gehören, oder anders gefragt, wohin würdet ihr eine Datei hinpacken, falls diese mit überreicht werden soll. Auf den anderen Rechnern wird ja kein "...\bin\debug" - Verzeichniss existieren. 😁

hmmmmm. cya

13.11.2006 - 16:50 Uhr

@svenson:

Also ich wollte gerade dieses "einhängen" im XML-Dokument verhindern, da eingehende Dokumente gegen mein, lokal auf dem Rechner liegendem Schema, validiert werden sollen. Diese Trennung habe ich mir mal herausgesucht und durch folgenden Code implementiert:


public bool checkXMLBlockFile(String inFileName)
        {
            // Dient zum pruefen, ob es sich bei der ausgewaehlten Datei im eine valide XMLBlock-Datei handelt.
            String checkFileName = inFileName;
            String schema = "block.xsd";
            checker = true;

            XmlTextReader reader = new XmlTextReader(inFileName);
            XmlValidatingReader vreader = new XmlValidatingReader(reader);
            XmlSchemaCollection xsc = new XmlSchemaCollection();
            xsc.Add("urn:blockFile-schema", schema);  //XSD-Schema
            vreader.Schemas.Add(xsc);
            //Set the validation event handler
            vreader.ValidationEventHandler += new ValidationEventHandler(this.ValidationCallBack);
            // Datei lesen und validieren...
            while (vreader.Read()) { }
            Console.WriteLine("Validation finished. Validation {0}", (checker == true ? "successful" : "failed"));
            
            vreader.Close();

            return checker;            
        }

Mit dem Code ist anscheinend soweit alles ok, da das Schema anscheinend gefunden wird (sonst würde die oben beschriebene Fehlermeldung ja nicht so lauten).

Weiß nur net weshalb beim validieren gemeckert wird. Ich werde es mal mit dem Schema-Code von kleines_eichhoernchen versuchen. Sehe da zwar keine großen Änderungen gegenüber meinem Code, doch wer weiß. 😁

cya

13.11.2006 - 15:50 Uhr

Kann da wirklich niemand etwas zu sagen? 🙁

Ich denke mal, dass es sich nur um einen kleinen Strukturfehler innerhalb meines Schemas handeln wird. Nur leider weiß ich nicht wo sich dieser verstecken könnte. Habe schon seit längerem nichts mehr mit XML-Schematas zu tun gehabt und bin mir deshalb etwas unsicher, ob mein Schema für meine XML-Instanz geeignet ist.

Please help =)

13.11.2006 - 13:52 Uhr

Hallöchen,

ich habe beim validieren eines XML-Dokumentes gegen ein XML-Schema ein seltsames Problem. Mir wird beim validieren folgender Fehler angezeigt:

"Validation Error: Das Element 'block' in Namespace 'urn:blockFile-schema' hat ein ungültiges untergeordnetes Element 'titel' in Namespace 'urn:blockFile-schema'. Erwartet wurde die Liste möglicher Elemente: 'titel'.Validation finished. Validation failed"

Ähm, widerspricht sich da die Fehlermedlung nicht selbst, wenn "titel" falscherweise gefunden wurde obwohl "titel" erwartet wurde. 🤔

Hier mal mein XML-Dokument:


<?xml version="1.0"?>
  <block xmlns="urn:blockFile-schema">
    <titel>jhgjhg</titel>
    <inhalt>
      <anleitung>
        <stufe>
          <Schritt>1</Schritt>
          <funktion>Test1</funktion>
        </stufe>
        <stufe>
          <Schritt>2</Schritt>
          <funktion>Test2</funktion>
        </stufe>
      </anleitung>
    </inhalt>
  </block>

Und hier das dazu gehörende XML-Schema:


<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	     xmlns="urn:blockFile-schema"
	     targetNamespace="urn:blockFile-schema">

<!-- XSD-Schema fuer eine XMLBlock-Datei-->
  <xsd:element name="block">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="titel" type="xsd:string"/>
        <xsd:element name="inhalt">
          <xsd:complexType>
            <xsd:choice>
              
              <xsd:element name="anleitung">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element ref="stufe" minOccurs="1"               maxOccurs="unbounded"/>                   
                  </xsd:sequence>  
                </xsd:complexType>
              </xsd:element>
            </xsd:choice>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  
  <!-- Definition fuer das Stufe-Element -->
  <xsd:element name="stufe">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="schritt" type="xsd:string"/>
        <xsd:element name="funktion" type="xsd:string"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  
</xsd:schema>

Hat da vielleicht einer ne Idee?

cya

09.11.2006 - 13:21 Uhr

Oh yeah, SO hab ich mir das vorgestellt. 8)
Vielen Dank für die wirklich schnelle Hilfe hurricane und ich versprech auch das nächste mal erstmal alle Eigenschaften durchzuschauen. 😁

09.11.2006 - 13:04 Uhr

Ich hab mal wieder ein Problem. Einen neue eingefügten Knoten in der TreeView als selektiert zu kennzeichnen ist ja kein Problem:


myTreeView.selectedNode = myNode;

, aber wie sieht es mit der grafischen Kennzeichnung des selektierten Knotens aus?
Ich rufe durch meine TreeView Einträge MDI-Child-Formulare auf und sobald ich in ein Child Fenster klicke geht diese grafische Hervorhebung des, gerade noch selektierten, Knotens natürlich verloren. Kann ich irgendwie festlegen, dass die TreeView trotzdem immer noch einen selektierten Knoten anzeigt, obwohl ich in einem anderen Fenster unterwegs bin?

Puh, ich hoffe ihr versteht mein Problem 😁

09.11.2006 - 12:32 Uhr

Ok, dann war ich wohl nicht ganz auf dem falschen Weg. 8)
Ich werde nun einfach mit der TreeNode.Tag-Eigenschaft auf ein Objekt, welches per ArrayList meine Verweise speichert, zeigen lassen.

Habt noch nen schönen Tag 😉

09.11.2006 - 11:52 Uhr

Hallo zusammen,

ich habe da (mal wieder) eine Frage bezüglich der TreeNode.Tag-Eigenschaft.
In meinem Programm wäre es sehr angenehm, wenn diese Eigenschaft mehrere Objektverweise enthalten könnte.
Dabei stellen sich mir noch mehrere Fragen:

  1. Ist dies in der Form
 TreeNode.Tag[i] 

, also mit Indexer bei Eigenschaften überhaupt möglich?

  1. Falls es möglich ist, welchen Weg würdet ihr einschlagen. Vielleicht die TreeNode-Klasse ableiten und in der eigenen eine Tags-Eigenschaft einbauen, die mehrere Objekte per ArrayList aufnehmen kann, oder einfach auf eine ArrayList zeigen mit dem alten TreeNode.Tag?

Ich bin etwas ratlos.....

cya

07.11.2006 - 15:01 Uhr

Danke DaMoe,

da hat meine Vorstellung der OO-Welt doch noch etwas anders ausgesehen und hat nun ein "update" bekommen. 😁
Zu deiner Frage: Ja, die Methodendeklaration sieht genau so aus.....

cya

07.11.2006 - 13:53 Uhr

Hi DaMoe,

natürlich ist Anleitung eine Ableitung der abstrakten Klasse Block. =)
Ich dachte mir, dass die Variable vom Typ Block alle Typen annehmen kann, die auch von ihr erben. Man kann ja auch eine Definition folgendermaßen schreiben:


Block newblock = new Anleitung();

Dann würde man doch trotzdem ein neues Anleitungs-Objekt erhalten oder?

cya

07.11.2006 - 13:12 Uhr

Halli hallo,

ich habe hier ein kleines Problem mit meiner Vererbungsstruktur und den daraus entstehenden Übergabewerten.
Mein Code Abschnitt sieht folgendermaßen aus:


public void saveSelectedElement(System.Windows.Forms.TreeNode inNode)
{
    Block tempBlock;
    switch (inNode.Tag.ToString())
    {
        case "Lecture.Anleitung":
            tempBlock = (Anleitung)inNode.Tag;
            modelObj.saveSelectedAnleitung(tempBlock);
            break;
         default:
             mainform.Text = "Kein unterstützter Informationsblock!!!";
             break;
     }
}

Der Compiler meldet nun in der Zeile mit,


modelObj.saveSelectedAnleitung(tempBlock);

den Fehler: Fehler:" 1-Argument: kann nicht von "Lecture.Block" in "Lecture.Anleitung" konvertiert werden."

Ich dachte eigentlich das ich durch die Zeile


tempBlock = (Anleitung)inNode.Tag;

schon genau diese Konvertierung vorgenommen habe. 🤔

Was mache ich falsch?

cyaaa

06.11.2006 - 16:22 Uhr

Jo funzt jetzt. Es lag also wirklich am falschen Event. Für mich wäre es halt logisch gewesen das ei mit der alten Version funktionert, doch anscheinend wurde das Event zu früh gefeuert.

Naja, jetzt klappts. VIELEN DANK frisch 👍

06.11.2006 - 16:10 Uhr

Hallo frisch,

der Fehler tritt erst beim Debuggen auf. Ich zeig dir mal den kompletten Code Abschnitt. Habe ich den Code vielleicht in einer, für diesen Fall ungeeigneten Event-Methode?



private void mapTree_Click(object sender, EventArgs e)
{
    int testInt;
    testInt = mapTree.SelectedNode.Level;
    if (testInt == 1)
    {
        this.informationsblockEinfügenToolStripMenuItem.Enabled = true;
    }
}

Dadurch, dass das Ereignis ja erst ausgelöst wird, wenn ich in die TreeView klicke, habe ich doch einen Knoten ausgewählt oder?

Hmmmmmm

06.11.2006 - 16:02 Uhr

Hallo zusammen,

da ich mich durch meine vorherigen Java Kentnisse relativ schnell in die C# Syntax und Arbeitsweise eingearbeitet habe, verwundert mich mein folgendes Problem um so mehr. Ich verstehe nicht warum mir der Debugger bei folgendem Codefragment den Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." meldet.

Hier mal der Code:


int testInt;
testInt = mapTree.SelectedNode.Level;
if (testInt == 1)
{
    this.informationsblockEinfügenToolStripMenuItem.Enabled = true;
}

Der fehler wird mir für die 2. Zeile gemeldet. Aber laut Visual Studio soll die Eigenschaft "Level" einen "int" Wert zurück liefern. Was mache ich falsch?

Hoffentlich wird es nicht zu peinlich für mich X(

Ciao

03.11.2006 - 17:24 Uhr

Danke talla, ich habe die "public" Modifizierung in der Model Class vergessen....

Sorry für den Thread.

Kann von mir aus gelöscht werden.....

03.11.2006 - 17:11 Uhr

Hallo zusammen,

ich baue mir gerade ein Programm nach dem MVC-Prinzip zusammen (also hoffe ich zumindest 😄) und habe da nun ein Problem, welches ich nicht nachvollziehen kann.

Beim Starten des Projekts wirft mir der Compiler folgenden Fehler aus:

Inkonsistenter Zugriff: Parametertyp "Lecture.Model" ist weniger zugreifbar als Methode "Lecture.MainForm.MainForm(Lecture.Controller, Lecture.Model)"

Den dazugehörigen Code-Abschnitt habe ich mal unten gepostet.


public Controller(Model inModel)
{

    this.modelObj = inModel;
    mainform = new MainForm(this, modelObj);


}// Ende des Konstruktors

Ich sehe irgendwie keinen Fehler... X(

Hat vielleicht jemand eine Idee woran es liegen könnte?

Das ganze hat erst angefangen, nachdem ich den Startpunkt in meiner "Program.cs" Datei geändert habe auf folgendes:


    static class Program
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Model model = new Model();
            Controller controller = new Controller(model);
            Application.Run();
            
        }
    }

25.10.2006 - 16:51 Uhr

Hi Totenmond,

also um alles nochmal zusammen zufassen: Lass die Deklaration per C#-Klassen(so wie es Borg schon geschrieben hat) aus dem Namensraum System.XML, einfach in die XML-Dokumente schreiben. Dann bist Du auf der sicheren Seite was XML-Konformität angeht, falls andere Anwendungen deine Dateien lesen sollen. Und ob eine Zeile mehr oder weniger im Code steckt, macht doch nun auch nichts mehr aus, oder? 😉

MfG Wax

24.10.2006 - 14:23 Uhr

Hi Vitök,

vielen Dank schonmal für die wirklich schnelle Hilfe. 😉
Ich werde gleich mal versuchen mir die ersten paar Seiten einzuverleiben. 😁

MfG Wax

24.10.2006 - 14:11 Uhr

Hi Borg,

genau das habe ich befürchtet. X(
Also gibt es wirklich noch kein "fertiges" Control, welches ich nutzen könnte?

Ok, gehen wir mal davon aus das ich das rendern wirklich übernehmen muss. Was würdest du mir da als Tipp geben, damit ich mich in diese Materie einarbeiten kann?

Ganz wichtig ist auch, dass ich auf das später im Dokument geschriebene zugreifen kann um es per XML persistent zu machen.

MfG Wax

24.10.2006 - 13:56 Uhr

Hallo zusammen,

ich plage mich nun schon seit Tagen mit der Planung eines Projekts rum und komme einfach nicht weiter. Es geht um ein Textverarbeitungs-Programm, in dem ganz nach MS-Word Art, Tabellen erstellt werden können, Listen angelegt oder Bilder eingefügt werden sollen. Leider habe ich in den .NET-Basisklassen noch kein Element gefunden, dass diese Dinge unterstützt. Die RichtTextBox kann zwar Tabellen anzeigen, indem ich sie mit RTF-Code füttere, doch dies sieht mir ziemlich umständlich aus.
Kennt ihr vielleicht doch schon Klassen die diese Art von Textverarbeitungselementen untersützten bzw. anbieten, oder (und davor fürchte ich mich 😄) muss ich mein eigenes Steuerelement schreiben, dass Tabellen unterstützt?

Falls ja habe ich nicht wirklich die Ahnung wie ich da vorgehen sollte.
Deswegen hoffe ich, dass jemand von euch noch eine andere Lösung parat hat.

MfG Wax

24.10.2006 - 13:48 Uhr

Hallo Totenmond,

also meines Wissens nach kann die XML-Deklaration ruhig weggelassen werden, wenn Du nicht unbedingt eine Zeichenkodierung angeben möchtest, oder aber angeben willst, ob das Dokument "alleine steht" (standalone) oder nicht.

Falls Du die Deklaration hinzufügst, muss mindestens die Version angegeben werden. Also eine minimale Deklaration sieht folgendermaßen aus:

<?xml version="1.0"?>

Kann aber im Normalfall auch weggelassen werden. Es kann gut sein das einige Browser dann anfangen zu meckern, wenn sie die XML-Deklaration nicht als erstes in einem XML-Dokument finden, doch ich weiß ja net in welchem Umfang Du die Datei verwenden möchtest.

MfG Wax 8)

22.10.2006 - 14:16 Uhr

Hi und vielen Dank erstmal für den Tipp. Ich habe schonmal von diesem Pattern gehört und werde es mir nochmals genauer durch den Kopf gehen lassen.....

Ciao

21.10.2006 - 18:58 Uhr

Hallo zusammen,

ich plane zur Zeit eine Art von Textverarbeitungs-Software und während meiner Analyse und dem erstellen meines Klassendiagramms kam mir dann doch ein Gedanke bezüglich der Verwaltung von einfachen Zeichen(also A,B,C,? usw...). Zum Beispiel habe ich eine Klasse "Absatz" und diese assoziiert mit der Klasse "Zeichen". Ich habe vorher noch nicht darüber nach gedacht ob es nicht etwas extrem langsam wäre, wenn ich pro Zeichen ein Objekt anlegen lasse. Das kann bei einem langen Text doch nur in die Hose gehen, oder? 🙂

Habt ihr vielleicht keine Bedenken in diese Richtung oder aber Vorschläge für einen anderen Lösungsweg?

MfG Wax

10.10.2006 - 11:55 Uhr

Hallo zusammen,

ich habe auch das Problem, dass ich mittels einer RichTextBox Tabellen anzeigen lassen möchte. Also der Benutzer soll wie in "Winzigweich Word" 🙂 einfach Tabellen einfügen können.

Leider habe ich keinen Plan ob es hierfür nicht bessere Controls als die RichTextBox gibt und wenn nein, ob es nicht einen anderen Weg gibt als den oben beschriebenen?
Ich möchte die in die Tabelle eingetragenen Daten später in einem XML-Dokument speichern und die Informationen aus diesem RTF-Code rauszuziehen sieht sehr mühsam aus. 😉

Also für Anregungen bin ich immer sehr dankbar..... Ciao