Laden...
Avatar #avatar-1868.jpg
Garby myCSharp.de - Member
Entwickler Tirol Dabei seit 08.03.2006 95 Beiträge
Benutzerbeschreibung
Walter

Forenbeiträge von Garby Ingesamt 95 Beiträge

13.01.2016 - 16:02 Uhr

Hallo martin_salo,

du könntest eine temporäre Tabelle erstellen (ID, Datum).
Diese dann mit den tatsächlichen Datumswerten füllen und per Inner Join mit der Rechnungstabelle verknüpfen.

04.11.2013 - 09:12 Uhr

Ich würde dir eher zu Zertifizierungen raten, die technologieunabhängig sind.

Hast du dafür auch Beispiele?

23.11.2012 - 11:14 Uhr

Hallo Schildkroete,

dazu ist noch zu sagen, dass bei Änderungen an Listen, die für Datenbindung verwendet werden oft nicht die Operation an sich das Problem ist, sondern die Aktualisierung der gebundenen Controls.
Viele Controls, die Listen darstellen (wie Grids) können deshalb die Aktualisierung der GUI zeitweise aussetzen.
Ich weiß nicht, ob das in deinem Fall zutrifft, aber such mal nach

Grid.BeginUpdate();
Grid.EndUpdate();

Alternativ dazu könntest du evtl. die Verbindung des Grids zur Liste vorübergehend trennen...

22.11.2010 - 10:49 Uhr

Hallo,

ich glaub mit iTextSharp müsste das auch gehen...

01.09.2010 - 08:17 Uhr

Hallo,

du kannst das Application.DocumentBeforeSave - Ereignis abonnieren
Dort wird als erster Parameter ein Document mitgegeben.
Den Pfad erhälst du über Document.Path

10.06.2010 - 16:15 Uhr

Das kann ich dir jetzt nicht glauben.
Es gibt ja keine Verbindung zwischen den Zeilen, also wird die Bedingung auf jede Zeile extra angewandt.

10.06.2010 - 15:59 Uhr

Deine Vermutung ist richtig 😉

evtl so:

IsNull(Feld, 'Hallo') = 'Hallo'  

Was bedeutet:

DataRow[] foundRows = tableAbruftyp.Select("ISNULL(Aenderungsschluessel, '" + strAenderungsschluessel + "') = '" + strAenderungsschluessel + "' and ISNULL(Verwendungsort, '" + strVerwendungsort + "') = '" + strVerwendungsort + "' and ISNULL(FertigungsbereichKennzeichen, '" + strFertigungsbereichKennzeichen + "') = '" + strFertigungsbereichKennzeichen + "' and ISNULL(Terminschluessel, '" + strTerminschluessel + "') = '" + strTerminschluessel + "'");

Btw: Ein Formatstring wär hier sicher übersichtlicher...

10.06.2010 - 15:48 Uhr

Jo, habs jetzt damit probiert, allerdings liefert es nicht das was ich oben beschrieben habe...

Das sollte es aber...
Zeig doch mal den Code.

10.06.2010 - 14:45 Uhr

Klick mal auf den Link, dann siehst du, dass IsNull sehr wohl verwendbar ist.

10.06.2010 - 14:13 Uhr

evtl so:

IsNull(Feld, 'Hallo') = 'Hallo'

Ansonsten:
DataColumn.Expression-Eigenschaft

27.05.2010 - 15:25 Uhr
  
System.Diagnostics.Process.Start(path, "/A \"page=" + seitenzahl + "\"");  
  

So würde ich das mit diesem Link verstehen...

Genau falsch:

System.Diagnostics.Process.Start("acrord32", "/A \"page=" + seitenzahl + "\" \"" + path + "\"");
26.05.2010 - 15:12 Uhr

Hallo S_teffi,

Ich brauche die Funktionalität, in meinem Programm PDF's auf einer bestimmten Seite anzeigen zu können (mir wär's eigentlich auch schon egal, wenn dazu der Reader aufgehen würd, nur dem krieg ich irgendwie die Seitenzahl nicht übergeben 😦)

So kannst du ein Dokument im Acrobat-Viewer an einer bestimmten Seite öffnen:

acrord32 /A "page=5" "C:\Probe.pdf"
17.03.2010 - 15:00 Uhr

Hat da schon jemand was herausgefunden?

Ich möchte auch einen gewöhnlichen Indexer auslesen:

Document.TablesOfContents[0].Range.Text
01.03.2010 - 16:11 Uhr

Hallo,

wie ich das sehe, hat das Attribut Bindable nichts damit zu tun.

DateTime ist eine Struktur, und hat deshalb Immer einen Wert, da kann der Designer nichts dafür.
Eventuell ist es für dich besser den Datentyp

Nullable<DateTime>

bzw.

DateTime?

zu verwenden.
Dieser kann dann den Wert null enthalten.

05.12.2009 - 10:40 Uhr

Hallo myUnderTakeR

probier mal die Property innerhalb des typisierten DataSet als

Nullable<DateTime>

bzw.

DateTime?

zu deklarieren.

08.10.2009 - 14:24 Uhr

Hallo #coder#

Du könntest versuchen einen Filter zu setzen.

ds.Tables[0].DefaultView.RowFilter = "DetailTable.Count() > 0"; // ungetestet
24.09.2009 - 15:23 Uhr

Hallo,

so würde es auch ohne UK funktionieren:

Select Max(a.datum1), Min(a.datum2), If(GrpHelper.GRP = 0, 0, @rownum := @rownum + 1) GRP1 , a.kw
  From (SELECT @rownum:=0) RN,
       PROBE a inner join (Select if(Max(b.datum1) < Min(b.datum2), 0, 1) GRP, b.kw
                             From PROBE b
                         Group By kw) GrpHelper
               on a.kw = GrpHelper.kw
 Group By GRP1, a.kw
24.09.2009 - 14:40 Uhr

Hallo demondriver235,

ich hab mal was zusammengehackt.
Ich gehe allerdings davon aus, dass die Tabelle einen eindeutigen Schlüssel hat (in der Abfrage heißt das Feld "ID"), den ich zum Gruppieren "missbrauche".
Es funktioniert soweit ganz gut, allerdings bezweifle ich, dass die Performance bei vielen Datensätzen noch gewährleistet ist....

Select Max(a.datum1), Min(a.datum2), If(GrpHelper.GRP = 0, 0, ID) GRP1 , a.kw
  From PROBE a inner join (Select if(Max(b.datum1) < Min(b.datum2), 0, 1) GRP, b.kw
                             From PROBE b
                         Group By kw) GrpHelper
               on a.kw = GrpHelper.kw
 Group By GRP1, a.kw
23.09.2009 - 17:01 Uhr

Hallo Minuert,

ein wenig Eigeninitiative bitte 😉
Du musst es natürlich auch über Reflection machen (wie in meinem obigen Beispiel von NotesUIWorkspace)

23.09.2009 - 13:09 Uhr

Hallo Minuert,

wie bereits oben erwähnt verwendest du die UI-Klassen (Frontend-Klassen) nur, wenn das Dokument direkt im Client bearbeitet werden soll. Sowas wie eine Fernsteuerung des Notes-Client. Wenn du einfach ein Dokument erstellen willst kannst du das auch einfach über die Backend-Klassen machen. Dann bekommt der User nichts davon mit. Allerdings musst du dann auch die Einladungen selber versenden usw..

So verbindest du dich über das Backend:

Erstelle Notes.NotesSession statt Notes.NotesUIWorkspace
NotesSession.GetDatabase öffnet die Datenbank
NotesDatabase.CreateDocument erstellt ein Dokument

Hier ist wieder zu beachten, dass NotesDatabas.CreateDocument ein Objekt der Klasse NotesDocument zurückgibt, wobei NotesUIWorkspace.ComposeDocument ein Objekt der Klasse NotesUIDocument zurückgibt.

was muss ich jetzt machen damit es bei diesem automatisch die richtigen Werte setzt (bez. wie/wo setze ich die parameter wie Zeit,Datum,Betreff)

Am besten ist, du erstellst einen Termin, genauso wie du ihn haben willst, und schaust dir in den Dokumenteigenschaften alle Feldwerte an.

Wie du Feldwerte setzt, hängt davon ab, ob du Frontend- oder Backend-Klassen verwendest.

Eine Beschreibung der Klassen findest du überall im Internet.

22.09.2009 - 08:38 Uhr

Hallo,

ich habe seit ca. 2 Wochen ein HTC Magic (original Vodafone ROM) und muss sagen, dass ich sehr zufrieden bin.
Im Gegensatz zum IPhone ist es ein wenig kleiner und schlanker. Man kann es wirklich super mit einer Hand bedienen.
Das Display ist vielleicht nicht ganz so gut, aber mit der etwas kleineren Bildschirmtastatur konnte ich mich nach ein paar Tagen ziemlich gut anfreunden.

Ein Entscheidungskriterium für mich war auch, dass man ziemlich unkompliziert eigene Applikationen entwickeln kann. Allerdings hat der Market bisher alle meine Wünsche erfüllt.

Der einzige negative Punkt, der mir aufgefallen ist: bei Verwendung von Wifi oder Internet hält der Akku nicht lange (bei mir max. 2 Tage), was für mich aber kein Problem ist.

19.08.2009 - 09:17 Uhr

Hallo Minuert,

wenn du es über Late Binding (COM) machst brauchst du keine Bibliotheken einbinden.
Nur der Notes-Client muss installiert sein.

object WS = Activator.CreateInstance(Type.GetTypeFromProgID("Notes.NotesUIWorkspace"));
object Doc = WS.GetType().InvokeMember("ComposeDocument", BindingFlags.IgnoreCase | BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, WS, new object[] { Server, Datenbank, "Appointment" });
// Felder setzen und speichern
if (Doc != null)
{
    Marshal.ReleaseComObject(Doc);
}
if (WS != null)
{
    Marshal.ReleaseComObject(WS);
}

Garby

18.08.2009 - 16:32 Uhr

Hallo Minuert,

Notes ist eine Dokumentenbasierte Datenbank.
Das kannst du dir so vorstellen, wie ein Verzeichnis, wo man beliebig viele Ini-Dateien reinspeichert.

Das heißt, dass ein Kalendereintrag gleich wie eine E-Mail erstellt wird.
Der Unterschied ist lediglich, dass sich Feldwerte unterscheiden.
Normalerweise reicht es das Feld "Form" auf die jeweilige Maske zu setzen.
Bei einem E-Mail wäre das dann "Memo", bei einem Termin "Appointment".
Am besten ist, du erstellst einen Termin, genauso wie du ihn haben willst, und schaust dir in den Dokumenteigenschaften alle Feldwerte an.

Wenn du den Termin direkt im Notes-Client erstellen willst, dann musst du die UI-Klassen verwenden.
Eine Beschreibung der Klassen findest du in der Notes-Entwicklerdokumentation.
Beispiel:

        Wsp := CreateOleObject('Notes.NotesUIWorkspace');
        Doc := Wsp.ComposeDocument(Server, Datenbank, 'Appointment');

Garby

12.08.2009 - 11:12 Uhr

Hi,

ich würde eine Schnittstelle IAbbildb definieren und den Parameter vom Typ IAbbildb deklarieren.

Garby

12.08.2009 - 10:33 Uhr

Hallo,

du musst den Parameter vom Typ der Schnittstelle definieren.

Garby

13.07.2009 - 14:06 Uhr

Hallo,

probier mal

Marshal.ReleaseComObject(notesSession);
27.06.2009 - 20:17 Uhr

Hallo,

wenn Dein Artikelobjekt die Schnittstelle ICustomTypeDescriptor implementiert, kannst du zusätzliche virtuelle Properties "vortäuschen".

10.03.2009 - 11:14 Uhr

Hallo serial,

wir haben sogar fast die gleiche Überschrift 😉
Link

03.03.2009 - 10:39 Uhr

Hallo kleines_eichhoernchen,

Control ctrl2 = Control.FromHandle(control.Handle)

gibt null zurück.
Werte ich contol.Handle im Debugger aus, steht folgender Wert im Überwachungsfenster:

Für die Instanz vom Typ "System.Windows.Forms.Control" können keine Felder abgerufen oder Methoden aufgerufen werden, da es sich um einen Proxy für ein Remoteobjekt handelt. Das ist eigenartig, weil SetParent ja funktioniert:

foreach (Control control in plugin.Controls)
{
    SetParent(control.Handle, this.Handle);
}

[DllImport("User32.dll")]
public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndParent);

Naja, ich habe inzwischen das gefunden.
Auf AppDomains werde ich wohl verzichten müssen...

03.03.2009 - 08:33 Uhr

@Assri Komla
Was bitte soll ich jetzt aus deinem vielsagenden Post entnehmen?
Wie poste ich richtig? - welchen Punkt hab ich denn deiner Meinung nach nicht eingehalten.
Meine Frage lautet nicht "Wie kann ich meine Anwendung pluginfähig machen", sondern "Wie kann ich ein UserControl aus einem Plugin laden, das wiederum in einer eigener AppDomain geladen wird".
Dazu habe ich das Problem - wie ich finde - eindeutig beschrieben.

@JunkyXL

Funktioniert alles bestens bis auf das Hinzufügen.
Bei Conrols.Add wird die Exception "Das Feld "parent" kann nicht in Typ "System.Windows.Forms.Control" gefunden werden." geworfen

OK, vielleicht hätte ich Form.Controls.Add schreiben sollen.

Hat vielleicht jemand eine Idee?

02.03.2009 - 16:50 Uhr

Hallo,

wie der Titel schon sagt, möchte ich gerne ein Plugin in eine eigene AppDomain laden,
aus diesem Plugin dann ein UserControl erzeugen, und dieses dann im Hauptprogramm einer bestehenden Windows.Form hinzufügen.

Funktioniert alles bestens bis auf das Hinzufügen.
Bei Conrols.Add kommt wird die Exception "Das Feld "parent" kann nicht in Typ "System.Windows.Forms.Control" gefunden werden." geworfen;

Aus diesem Grund habe ich es mit SetParent probiert.
Das funktioniert dann auch, allerdings mit der unschönen Nebenwirkung, dass im UserControl nicht mehr mit TAB zwischen den Controls gewechselt werden kann.

Hat jemand eine andere Idee, wie ich das UserControl einem Formular zuordnen kann, oder vielleicht einen Workaround für das unschöne SetParent-Problem?

Danke im Voraus

13.06.2008 - 09:39 Uhr

ich hatte auch das gefühl dass Sie das extra gemacht haben, aus welchem grund auch immer...

Ja genau, die Deutschen wollen es halt ein wenig spannend machen 😉

Im Ernst, ich bin auch enttäuscht von der Leistung der Deutschen.
Gegen Polen haben sie für mich wie ein Turnierfavorit gespielt.
Nie und nimmer hab ich mir vorstellen können, dass sie gegen die Kroaten so schlecht aussehen würden.
Vor allem, wenn man gesehen hat, was die Kroaten gegen Österreich abgeliefert haben.

Jetzt bin ich aber mächtig gespannt auf Montag.
Ich hoffe auf ein super Spiel und möge der bessere (an diesem Tag) gewinnen 😉

Trotzdem würde mich interessieren, was die deutschen Fußball-Ikonen wie Breitner, Müller und auch die deutsche Fachpresse dazu sagen würden, wenn Österreich Deutschland aus dem Bewerb wirft.
Immerhin haben oben genannte sogar noch nach dem Österreich-Kroatien-Spiel den Österreichern die EM-Tauglichkeit abgesprochen...

Die haben uns an die Wand genagelt!

28.04.2008 - 14:26 Uhr

Hallo,

...hatte mal das gleiche Problem...

        /// <summary>
        /// Umschließt jedes Vorkommen von ReplaceText in Text mit dem HtmlTag
        /// </summary>
        /// <param name="Text">Der Text, in dem gesucht wird</param>
        /// <param name="ReplaceText">Der zu umschließende Text</param>
        /// <param name="HtmlTag">Der Tag. Hier bitte auf die spitzen Klammern verzichten</param>
        /// <returns>Den Ergebnisstring</returns>
        public static string ReplaceWithHtmlTag(string Text, string ReplaceText, string HtmlTag)
        {
            string RegExStr = 
                // Lookbehind
                // Vor dem gesuchten Text darf sich kein <, aber beliebig viele nicht < oder > befinden
                @"(?<!<[^<>]*)" + 
                // Lookbehind
                // Am Anfang des Wortes, in dem der gesuchte Text enthalten ist,
                //  darf nicht unmittelbar ein & stehen.
                // Dies zum Schutz von Sonderzeichen wie &nbpsp; oder &auml;.
                @"(?<!&\w+)" +
                // Backreference
                // Gibt dem gesuchten Text den Namen txt, damit derselbe im String vorkommende Text verwendet werden
                // kann, um diesen in Html-Tags einzuschließen.
                @"(?<txt>{0})" +
                // Lookahead
                // Nach dem gesuchten Text darf sich kein >, aber beliebig viele nicht < oder > befinden.
                @"(?![^<>]*>)";
            string Result = Text;
            if (!String.IsNullOrEmpty(Result))
                Result = Regex.Replace(Result,
                    string.Format(RegExStr, ReplaceText),
                    "<" + HtmlTag + ">${txt}</" + HtmlTag + ">",
                    RegexOptions.IgnoreCase);
            return Result;
        }

16.04.2008 - 17:11 Uhr

Hallo,

so sollte es gehen:

int ID = (int)Command.ExecuteScalar("Insert Into Klienten(...) Values(...); Select LAST_INSERT_ID();");
21.01.2008 - 11:31 Uhr

...wird der Breakpoint erreicht, die gesamte Umgebung friert kurz ein (3-5 Sec) der Breakpunkt ist gelb (Ich kann aber die Schleife nicht mit F10 durch steppen.)

Genau so verhält es sich bei mir auch.

Ich probier es nächstes mal mit dem Ausgabefenster - mal sehen.

Walter

19.11.2007 - 17:31 Uhr

Das Aufteilen in mehrere Dlls hat den Vorteil, dass jedes Control eine eigene offizielle Versionsnummer hat, und man jedes Control separat updaten kann.

19.11.2007 - 11:08 Uhr

Hallo,

mit

Explorer /select,C:\Config.sys

dürfte es gehen.
Walter

12.07.2007 - 12:19 Uhr

Naja, ich weiß nicht....
So ziemlich alle User die ich kenne lesen aus Prinzip keine Readme-Dateien, bevor sie eine Software installieren.
Außerdem reagieren einige Kunden sehr gereizt auf Aussagen wie: "Das steht doch in der Readme".

Deine Vermutung, dass die Condition über .NET ausgewertet wird glaub ich nicht, weil dann müsste ja das MSI-Paket in .NET geschrieben sein.
Somit könnte man sich die Abfrage, ob das Framework installiert ist auch sparen, weil das MSI-Paket gar ausgeführt werden kann. 😉

Hat sonst einer vielleicht eine Idee?

11.07.2007 - 14:25 Uhr

Hallo,

ich möchte in einem Setupprojekt verhindern, dass die Applikation auf einem Betriebssystem < Win2k installiert wird.
Dafür verwende ich eine Startbedingung mit der Condition "VersionNT≥500".

Mein Problem ist, dass die Meldung, dass .Net installiert werden muss vorher kommt.
Mich würde das ziemlich ärgern, wenn ich als User erst das .NET-Framework downloaden und installieren müsste, und dann kommt die Meldung, dass die Applikation doch nicht zum Installieren geht.

Gibt es eine Möglichkeit die Reihenfolge der Startbedingungen zur verändern.
Oder geht es vielleicht auf eine andere Art?

Danke im Voraus

Walter

29.05.2007 - 09:17 Uhr

Da fallen mir spontan auch noch ein paar ein...*Philadelphia *The Machinist *Bube Dame König Gras *Snatch *Und täglich grüßt das Murmeltier *Braveheart *Besser gehts nicht *Wag the Dog *Grosse Pointe Blank *True Lies *Austin Powers *Batman Begins

24.05.2007 - 14:15 Uhr

Original von kleines_eichhoernchen
Ich kann jetzt leider nix zu Preisen oder speziellen Funktionen sagen, hab nur mal nen Video zu Sybase iAnywhere Advantage Datebase Server gesehen. Gibts als Server und auch als lokale Klient-Variante. Installation für lokal ist nicht nötig. 2 dlls ins Anwendungsverzeichnis und das soll reichen.

vllt. noch nen
>

Der Advantage ist ganz gut, allerdings ist er auch ziemlich teuer.
Leider hat er 2 Schwächen(muss nicht unbeding von Belang sein):1.Kann kein Unicode 1.Bei der embedded-Version können nicht mehrere User auf 1 DB zugreifen.

TurboDB könnte was für dich sein.

Walter

14.05.2007 - 13:44 Uhr

Wenn du DataSet/DataTable verwendest, könntest du die Columns-Collection abfragen.

07.05.2007 - 14:36 Uhr

Hallo allerseits,

ich implementiere jetzt IXmlSerializable bei der Klasse PersonCollection.
Damit kann ich die Serialisierung von Hand ausprogrammieren.

Hier ist mein erster, soweit funktionierender Lösungsansatz.
Vielleicht fällt ja jemandem noch was besseres/einfacheres ein:


public interface IPerson
{
    string Name
    {
        get;
        set;
    }

    DateTime Geburtsdatum
    {
        get;
        set;
    }
}

[Serializable]
public class Person : IPerson
{
    public Person()
    {

    }

    public Person(string Name)
    {
        this.Name = Name;
    }

    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private DateTime geburtsdatum;

    public DateTime Geburtsdatum
    {
        get { return geburtsdatum; }
        set { geburtsdatum = value; }
    }
}

[Serializable]
public class Angestellter : IPerson
{
    public Angestellter()
    {

    }

    public Angestellter(string Name, float Gehalt)
    {
        this.Name = Name;
    }

    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private DateTime geburtsdatum;

    public DateTime Geburtsdatum
    {
        get { return geburtsdatum; }
        set { geburtsdatum = value; }
    }

    private float gehalt;

    public float Gehalt
    {
        get { return gehalt; }
        set { gehalt = value; }
    }
}

[Serializable]
public class PersonCollection : List<IPerson>, IXmlSerializable
{
    public PersonCollection()
    {

    }

    #region IXmlSerializable Member

    public System.Xml.Schema.XmlSchema GetSchema()
    {
        return null;
    }

    public void ReadXml(System.Xml.XmlReader reader)
    {
        XmlReader SubReader;
        reader.ReadStartElement();
        while (reader.IsStartElement())
        {
            SubReader = reader.ReadSubtree();
            // Alles wird in ein XmlDocument gelesen, weil ich nicht weiß, wie ich den Cursor
            // im XmlReader auf Position 1 zurückstellen kann.
            XmlDocument Doc = new XmlDocument();
            Doc.Load(SubReader);
            string Klasse = Doc.ChildNodes[0].Name;
            
            StringBuilder Bld = new StringBuilder();
            XmlWriter Wr = XmlWriter.Create(Bld);
            Doc.Save(Wr);
            StringReader Sr = new StringReader(Bld.ToString());
            // Neuen Reader erstellen.
            SubReader = XmlReader.Create(Sr);

            XmlSerializer Serial = new XmlSerializer(Type.GetType("ProbeApp." + Klasse));
            this.Add((IPerson)Serial.Deserialize(SubReader));
            reader.ReadEndElement();
        }
    }

    public void WriteXml(System.Xml.XmlWriter writer)
    {
        foreach (IPerson Pers in this)
        {
            XmlSerializer Serial = new XmlSerializer(Pers.GetType());
            StringWriter Wr = new StringWriter();
            Serial.Serialize(Wr, Pers);
            string PersTxt = Regex.Replace(Wr.ToString(), @"<\?xml version.*?>", "");
            writer.WriteRaw(PersTxt);
        }
    }

    #endregion
}
private void Serial()
{
    PersonCollection Personen = new PersonCollection();
    Personen.Add(new Person("Name1"));
    Personen.Add(new Angestellter("Ang1", 100));
    Personen.Add(new Person("Name2"));
    Personen.Add(new Angestellter("Ang2", 200));

    using (FileStream Str = new FileStream("C:\\Personen.xml", FileMode.Create))
    {
        XmlSerializer Ser = new XmlSerializer(typeof(PersonCollection));
        Ser.Serialize(Str, Personen);
        Str.Close();
    }
}

private void DeSerial()
{
    PersonCollection Personen;
    using (FileStream Str = new FileStream("C:\\Personen.xml", FileMode.Open, FileAccess.Read))
    {
        XmlSerializer Ser = new XmlSerializer(typeof(PersonCollection));
        Personen = (PersonCollection)Ser.Deserialize(Str);
        Str.Close();
        foreach (IPerson Pers in Personen)
        {
            textBox2.Text += Pers.Name;
            if (Pers is Angestellter)
            {
                textBox2.Text += ";" + ((Angestellter)Pers).Gehalt.ToString();
            }
            textBox2.Text += Environment.NewLine;
        }
    }
}
06.05.2007 - 18:09 Uhr

Hallo 0815Coder,
das Funktioniert leider nicht, bekomme immer noch die gleiche Meldung 🙁

05.05.2007 - 20:05 Uhr

Hallo,

ich möchte gerne eine generische Liste eines Interfaces serialisieren.
Hier ein Beispiel:


    public interface IPerson
    {
        string Name
        {
            get;
            set;
        }
    }

    [Serializable]
    public class Person : IPerson
    {
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }

    [Serializable]
    public class PersonCollection : List<IPerson>
    {
        public PersonCollection()
        {

        }
    }

...


    private void button1_Click(object sender, EventArgs e)
    {
        PersonCollection Personen = new PersonCollection();
        Personen.Add(new Person());
        Personen.Add(new Person());

        using (FileStream Str = new FileStream("C:\\Personen.xml", FileMode.Create))
        {
            XmlSerializer Ser = new XmlSerializer(typeof(PersonCollection));
            Ser.Serialize(Str, Personen);
            Str.Close();
        }
    }

Ich bekomme immer den Fehler:
Die Schnittstelle ProbeApp.IPerson kann nicht serialisiert werden.

Ich habe auch schon probiert ISerializable zu implementieren, führt aber zum gleichen Ergebnis.

Hat jemand eine Idee?

Danke
Walter

04.05.2007 - 12:42 Uhr

Hallo,

hast du damit Erfolg gehabt?
Findet man dazu vielleicht irgendwo ein Beispiel?

Danke
Walter

26.03.2007 - 11:49 Uhr

Original von oli001
Sortieren klappt ja (naja aber halt wie....) 1,10,2,20,21,22,3,4,5,6,7...... des kann ja net wahr sein oder??

Das liegt wahrscheinlich daran, dass deine Sortierspalte nicht numerisch ist, oder?

15.03.2007 - 13:17 Uhr

Einen Teil deiner Anforderungen würde doch auch eine normale Chart-Library abdecken.
z.B.: Zedgraph.

05.03.2007 - 09:40 Uhr

Hallo,

weiß jemand, wie ich den in Windows registrierten Firmennamen herausfinden kann?

Danke
Walter