Laden...
W
Benutzerbeschreibung

Forenbeiträge von webbi Ingesamt 201 Beiträge

30.06.2008 - 14:00 Uhr

sorry, stand am Schauch...
Danke 🙂

30.06.2008 - 13:53 Uhr

Hallo!

Mit updaten meinst du File einfach überschreiben oder aus der Applikation neu compilen?

lg

30.06.2008 - 13:50 Uhr

Kann mir vielleicht noch wer sagen, was herbivore mit analog gemeint haben könnte?
Sein Beitrag klingt noch so, als würde das ganze irgendwie gehen...

lg

30.06.2008 - 13:42 Uhr

also du hast eine klasse "X" die implementiert IList<T>

Ja

und du willst, das sie IList implementiert weil gui-Komponenten dies benötigen. (welche denn? und was willst du damit machen?)

z.B.
Außerdem möchte ich ja innerhalb meiner Applikation immer denselben Listen-Typ verwenden. Die Liste als Klass "X" erstellen darf ich nicht - ich bekomme sie eben nur bei einer DB-Abfrage.
Und noch dazu kann man sie wie gesagt nicht ableiten.
Eine GUI-Komponente die keine IList<T> unterstützt ist z.B. das DevExpress Grid. Mit einem Grid will ich Daten anzeigen 🙂

und du willst diese klasse "X" in List<T> casten wobei ein kopieren des inhaltes ausgeschlossen ist.

Ja

eigendlich möchtest du es in eine klasse myList<T> die von List<T> erbt casten.

Ändert an dem Problem nicht viel, aber ja

antwort:
du kannst nciht klasse "X" einfach in eine x-beliebige andere klasse casten. das ist ungefähr so als ob ich eine textbox zu einem button casten möchte.

Soweit war ich schon, aber danke

wenn du gewisse methoden verwenden willst, dann verwende das interface IList<T> oder die von den anderen inerfaces aber alles andere ist nicht zulässig.

Wie schon gesagt will ich nicht 🙂

30.06.2008 - 12:02 Uhr

Noch was:

Ich möchte eigentlich keine List<T> verwenden sondern eine Davon abgeleitete Klasse da noch einige Funktionen überschrieben/erweitert werden müssen.
Noch ein Grund warum ich die DB-interne Klasse nicht verwenden kann.

lg

30.06.2008 - 11:49 Uhr

Hallo Johnny!

trigger3 hat die Funktion eh schon so schon hingeschrieben.
IndexOf(string value, int startIndex)

Ab startIndex wird gesucht.

Also letzte Position merken und ab da weitersuchen...

lg

30.06.2008 - 10:38 Uhr

Hallo JAck30lena!

Ich bekommen eben keine List<T> sondern eine Klasse die IList<T> usw(s.o.) implementiert, aber eben keine IList.
List<T> implementiert auch IList...

dir vielleicht. 🙂

Um das noch zu erleutern: Eine Klasse die IList nicht implementiert wird z.B. von viele GUI-Komponenten nicht unterstützt....
Darum der Wunsch eine List<T> zu verwenden

30.06.2008 - 10:17 Uhr

Hallo herbivore!

dir vielleicht. 🙂

Ich denke dir auch 🙂
Und ich bezweifle, dass mir jemand, dem die Probleme nicht bekannt sind, hier weiterhelfen kann...

Ich dachte die DB-interne Klasse implementiert IList<T> (nur eben IList nicht).

Darum kann ich sie nach nicht wie gewünscht verwenden. Noch dazu ist sie sealed....

ReadOnlyBaseList kopiert ja auch nicht, sondern wrappt nur. Auch wenn du ReadOnlyBaseList nicht verwenden kannst, kannst du zumindest analog vorgehen.

Was meinst du mit analog?

Danke

Webbi

29.06.2008 - 21:49 Uhr

Hallo Leute!

Ich versuche mein Problem mal an einem kleinen Beispiel zu Beschreiben:


public class Person
{
    ...
    private IList<Child> children;
    ...

    public IList<Child> Children
    {
        get
        {
            if (this.children == null)
                this.children = new List<Child>();
            return this.children:
        }
        set 
        {
            this.children = value;
        }
    }
}

Die Klasse hängt an einer OODB - Durch verwenden von IList<T> wird eben in der DB eine Liste erstellt.
Mein Problem ist, dass ich so zwar Problemlos in die DB schreiben kann, beim Lesen aber als children eine Klasse zurück bekomme, die zwar IList<T>, ICollection<T>, IEnumerable<T> und IEnumerable implementiert, aber nicht IList. Die Kompatibilitätsprobleme die dabei entstehen sind ja bekannt...
Da ich List<T> in der Applikation verwenden möchte stehe ich nun vor dem Problem aus dieser DB-internen klasse eine List<T> zu machen...
Da das ganze eben direkt an der DB "hängt" kann ich leider auch nicht einfach alle Items in eine neue List<T> kopieren oder so, da Änderungen an "children" ja wieder in die DB zurück geschrieben werden sollen...

Ich habe mir auch schon den Beitrag ReadOnlyBaseList <TBase, TDerived> - Ein hilfreicher Wrapper angeschaut - wenn ich das richtig verstanden habe scheitert das aber an der DB wieder...
Und auch die Performance sollte ja berücksichtigt werden...

Hat wer eine Idee dazu?

lg

25.06.2008 - 12:09 Uhr

Nach dem zweiten mal durchlesen -> Blöde Frage, Sorry!
Läuft, erledigt, danke!

25.06.2008 - 12:05 Uhr

Hilft, danke!

Geht doch aber sicher noch einfacher, oder?

25.06.2008 - 09:02 Uhr

@herbivore

Danke für die Erfüllung meiner Befürchtungen... 🙂
Die Felder sind in echt eh private, aber mit Properties wäre das Beispiel recht lang geworden…

@JuyJuka
Ich habe das Problem ein geniales Grid zu verwenden, das leider nur IList und nicht IList<> als DataSource akzeptiert. Dann habe ich das Problem aus meine OODB bei Abfragen eine IList zu bekommen von denen ich den Typ wieder nicht abfragen kann. Nun wäre wohl die eleganteste Lösung aus der IList eine IList<> zu machen und das Grid zu erweitern.

Ich habe eine IList<T> und übergebe diese. Nun mag mein Compiler


If (obj is IList<>)
{
  GetRootType(obj as IList<>);
}

nicht -> Typ erwartet.
Übergeben werden kann ein Objekt und ich möchte wissen, ob es eine IList<> ist und wenn dann von welchem Typ…
Hoffe das geht zumindest…

//Habe den Post von unten nach oben geschrieben und hoffe es ist trotzdem verständlich...

Danke

25.06.2008 - 08:48 Uhr

Hallo!

Das wäre dann so das einfachste Beispiel.
So soll's natürlich auch gehen:


...
meineMethodeDieEineIListErwartet(meinePersonInstanz.children);
...

void meineMethodeDieEineIListErwartet(IList lst)
{
  meineAndereMethodeDieEineIListErwartet(lst);
}

void meineAndereMethodeDieEineIListErwartet(IList lst)
{
  GetRootTypeOf(lst);
}

Bin mir eben nicht sicher ob es einen Unterschied macht, ob ich meinePersonInstanz.children oder einfach eine IList übergebe.
Natürlich sind es mehrere Klassen mit je mehreren Listen...

lg

24.06.2008 - 22:37 Uhr

Hallo!

Ich habe ein ähliches Problem:


public class Person
{
    public string firstname;
    public string lastname;
    public int age;
    [ItemType(typeof(Child))]
    public IList children;

    public Person()
    {

    }
}

public class Child
{
    public string Vorname;
}

Wenn ich nun diese IList im Programm übergebe müsste ich das ItemType-Attribute abfragen können…

Wird schecht gehen, oder?

lg

18.06.2008 - 21:50 Uhr

Hätte es schon mit der tollen Volltextsuche des Objektbrowser versucht aber ohne Ergebnis...

Danke an alle!

18.06.2008 - 21:43 Uhr

mit StringBuilder ohne ref geht's...
mit strings ging's nicht ohne ref...

Danke!

@winSharp93
Ich kann die dll dem Projekt hinzufügen, aber eben die Funktion ist nicht zu finden...
Desswegen ja DllImport...
Warum kann das sein? Nicht, dass es jetzt noch wichtig wäre aber so aus Neugierde... 🙂

18.06.2008 - 21:29 Uhr

wenn ich den Soucre der dll hätte würd ich sie neu schreiben... 🙂

das komische ist, dass wenn ich die dll in mein Projekt lade diese Funktion nicht zu finden ist... Andere allerdings schon...
In VB geht's leider perfekt...

18.06.2008 - 21:24 Uhr

Wow!
Das geht ja schnell heute!

@winSharp93
Hab ich schon => Gleicher Fehler...

@kleines_eichhoernchen
Wie gesagt...
Auch mit kleinerem oder größerem StringBuilder geht's nicht...

Danke!

18.06.2008 - 21:15 Uhr

Hallo Leute!

Es gibt bei uns im Netz eine dll - nennen wir sie mal xc2Api - und ein VB-Script das darauf zugreift, ein Objekt übergibt, und einen Dateinamen zurück bekommt...


Private Declare Function xc2Import Lib "xc2Api" (ByVal xObject As xc2Api.xc2Object, ByVal strFileName As String) As Long 

Private Sub btnImport_Click() 
    ...
    xObj = Items.Item(i)
    Filename = Space(260)
    xc2Import(xObj, Filename)
    ...
End Sub 
... 

nun wollte ich das ganze in eine C#-Applikation einbauen und stoße auf folgendes Problem:


 [DllImport("xc2Api.dll")]
 public static extern long xc2Import(xc2Api.xc2Object item, ref string file);

...
xObj = Items.Item(i) 
string cTmpFile = string.Empty;
xc2Import(xObj, ref cTmpFile);
...

Das Resultat des ist leider folgendes:

Eine nicht behandelte Ausnahme des Typs "System.AccessViolationException" ist in xc2Import.exe aufgetreten.
Zusätzliche Informationen: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

Hätte auch schon versucht einen String mit 260 und mehr Leerzeichen mitzugeben aber das bringt leider auch nix...

Zu meiner Verteidigung möchte ich noch sagen, dass ich aus der Delphi-Welt und nicht aus VB komme... 🙂

Bin für alle Tipps offen!

lg

02.06.2008 - 11:32 Uhr

Hallo!

Hab auch schon mal gesucht und nix gefunden... X(
Gibt es schon eine Lösung oder kann sonst wer helfen?

webbi

02.06.2008 - 11:30 Uhr

Hallo!

Werd mal ein bisschen damit spielen... 😁

Danke 👍

01.06.2008 - 23:37 Uhr

Hallo herbivore!

Je nachdem in welcher Datenbank sich das Objekt befindet soll beim Zugriff entweder das Objekt, null oder eine Exception zurück kommen…
Aber dann wird ich es umständlich machen müssen…

Danke! 👍

webbi

31.05.2008 - 18:19 Uhr

Hallo und Danke!

Dann wird also auch der umgekehrte Weg nicht gehen, oder?
Also beim Zugriff auf ein xObject unter bestimmten Umständen null zu bekommen?

lg

30.05.2008 - 17:01 Uhr

Hallo!

Hab mich wohl nicht so ganz verständlich ausgedrückt...
Dass die beiden Beispiele eigentlich nichts miteinander zu haben ist mir schon klar – ich wollte nur noch beschreiben wie ich auf die Idee gekommen bin… egal 🙂

Mein Wunsch:


xObject obj;
obj.Name = "TestName1";

Das Objekt soll sich beim ersten Zugriff selber erstellen, wenn null.
Wichtiger wäre das ganze einfach bei:


public class xObjectMaster
{
  public xObjectMaster()
  {  }
  public string Name;
  public xObject Sub;
}

xObjectMaster m = new xObjectMaster();
m.Name = "Master";
m.Sub.Name = "Sub";

So könnte man sich einige (Obj == null)-Abfragen und Properties sparen… (=> Es geht um einen recht aufwändigen Klassenbaum)

Besser ? 🙂

lg

30.05.2008 - 14:48 Uhr

Hallo Leute!
Bin gerade beim Stöbern im Forum auf ein kleines Beispiel gestoßen:


public class Wert
{
    private Dictionary<string, object> werte = new Dictionary<string, object>();

    public object this[string name]
    {
        get
        {
            return werte[name];
        }
        set
        {
            werte[name] = value;
        }
    }
}

Nun hatte ich die Idee ein ganzes Objekt wie ein Property anzusprechen – etwa so:


public class xObject
{ 
    
    public xObject this
    get
    {
        if (this == null)
        {
    	    this = new xObject();
        }
        return this;
    }
    set
    {
        this = value;
    }
}

Aber das will nicht so ganz…
Könnte das irgendwie gehen?

lg

30.05.2008 - 14:08 Uhr

Hallo!

Gibt es Funktionen um eine CodeDom.CodeCompileUnit aus Source-Text oder einem Assembly zu erstellen?
Hab mal eine Routine gebastelt, die ein Assembly ausliest, manuell ist aber das auslesen der CustomAttributes recht aufwändig…

lg

29.04.2008 - 14:59 Uhr

Das hab ich gesucht und nicht gefunden...

Super, danke!

28.04.2008 - 18:10 Uhr

Hallo Leute!

Ich habe seit Freitag ein HP 614c mit Windows Mobile 6 drauf.
Nach Firm-Update kann man mit dem Ding sogar mehr als 2 Telefongespräche hintereinander führen…
Nun möchte ich ein kleines Tool schreiben da mit die Arbeit mit dem Ding etwas erleichtert…
Was mir vorstelle ist eine Verbindungsverwaltung um z.B. schnell eine VPN aufzubauen und eine Liste der Aktiven Programme mit Wechsel- und Kill-Funktion… Prozessor und Memory-Auslastung kann ich schon auslesen…
Leider gibt’s ja die Funktion Process.GetProcesses nicht im Compact Framework…

Hat sich schon mal wer damit beschäftigt?

lg

14.12.2007 - 14:21 Uhr

🙂
Also doch so einfach 🙂

Danke und sorry wegen dem Aufwand...

14.12.2007 - 14:08 Uhr

Hallo!

Entweder reden wir grade aneinander vorbei, oder es ist zu einfach und ich schnall es vor lauter kompliziert denken nicht...
Dass ich da einfach noch ‘public string Telefon‘ hin tippen kann ist mir schon klar 🙂
Um auch gleich den Beitrag von svenson zu kommentieren:
Die DB kann nur mit einem Tool vom Hersteller erstellt/upgedated werden und das braucht ein bzw. mehrere Assemblys aus denen das Schema ausgelesen wird.
Das heißt ich habe ein Assembly mit dem ‘Grund-Schema‘ (meine exe) und zusätzlich ein Assembly mit dem kundenspezifischen Schema - Das funktioniert soweit auch wenn ich z.B. im Kunden-Schema einfach nur eine neue Klasse erstelle.
Kunden-Schemaerweiterung sieht dann z.B. so aus:


namespace db
{
  public class Kunde: Adresse
  {
    public string Rechnungsanschrift;
    public string Ansprechpartner;
    public string UID;
  }
}

Aus dem Code mach in ein Assemby, update die DB und wenn ich dann das Assemby lade und anschließend die DB öffne funktioniert alles wunderbar.

Nun die Frage Wie der Code aussehen muss, um vorhanden Klassen zu erweitern – So geht’s ja nicht, oder❔


namespace db
{
  public class Adresse : DBObject
  {
    public string Telefon;
    public string Fax;
    public string Email;
  }
}

Da das ganze von Hersteller nicht so vorgesehen ist, und mit der DB laut Hersteller auch niemand so arbeitet (alle anderen verwenden ausschließlich fixe Schemen) ist der Support in dem Punkt etwas beschränkt aber wie gesagt mit dem Tool geht’s….

Und die Felder sind natürlich nicht pubilc – habe das nur in dem Beispiel so schnell, schnell hin getippt.

lg

13.12.2007 - 20:09 Uhr

Dann generiere einfach die zusätzlichen Felder hinein.

Ok, dann fehlt es mir in dem Punkt einfach noch an C#-Erfahrung 🙂
Wie?

13.12.2007 - 19:24 Uhr

Beispiel:

Ich Habe die Klasse Adresse im Schema der Application


namespace db
{
  public class Adresse : DBObject
  {
    public string Name1;
    public string Name2;
    public string Name3;
    public string Strasse;
    public string Plz;
    public string Ort;
  }
}

Wie soll ich die überschreiben bzw. erweitern können?

13.12.2007 - 18:31 Uhr

Hallo!

Ich arbeite seit kurzem mit CSharpCodeProvider.CompileAssemblyFromSource um Source-Code innerhalb meiner Anwendungen zu kompilieren und auszuführen und das funktioniert auch schon echt super!

Nun stehe ich von dem Problem in .NET zur Laufzeit mein Klassenschema zu erweitern.

Die Idee dahinter ist folgende: Ich habe eine OODB deren Schema beim Programmstart an ein Schema meiner Applikation angepasst wird und das funktioniert auch schon perfekt. Nun möchte ich aber noch das Schema in der Applikation kundenspezifisch erweitern können und danach die DB anpassen und der Kunde kann dann z.B. die Oberfläche des Systems anpassen und sonst noch etwas herum programmieren.

Aus dem „Kunden-Source“ generiere ich mit CodeDom ein Assembly dass dann wieder beim Programmstart geladen wird, aber hier stehe ich eben noch vor dem Problem vorhandene Klassen zu erweitern.

Ich weiß, dass das z.B. in C++ oder auch Delphi möglich ist, in C#.NET bereitet das aber anscheinend einige Probleme.

Hoffe ich habe mich einigermaßen verständlich ausgedrückt…

Wenn damit schon jemand Erfahrung hat oder sonstige Ideen dazu – Würde mich sehr freuen 🙂

lg

23.11.2007 - 16:02 Uhr

Hallo und Danke!

Was funktioniert ist das Output-Assembly von einem Script beim compilieren vom anderen als ReferencedAssemblie angeben. Aber wie gesagt - ich will's ohne Dateisystem hinbekommen.

Also wenn damit mal jemand gespielt hat und sich auch doch erinnert - Würd mich freuen...

lg

22.11.2007 - 18:30 Uhr

Hallo!
Ich arbeite seit gestern mit CSharpCodeProvider.CompileAssemblyFromSource um Source-Code innerhalb meiner Anwendungen zu kompilieren und das funktioniert auch schon echt super!
Allerdings stehe ich noch vor dem Problem, dass ich CompilerParameters.ReferencedAssemblies nur Dateien angeben kann, möchte aber auch von einem Script auf ein anderes zugreifen können.
Es gibt doch sicher eine Möglichkeit dem Compiler ein zuvor erstelltes Assemblee mitzugeben ohne es in eine Datei zu speichern, oder?

lg

22.11.2007 - 15:29 Uhr

🙂 - Wenn man den Wald vor lauter Bäumen nicht sieht...

thx

22.11.2007 - 15:10 Uhr

Hallo!

Ich versuche grade die richtige Collection für folgende Anforderung zu finden.

Ich möchte Objekte in einer Liste speichern wobei zu jedem Objekt ein ID-string gehört - ich möchte also dann ein Objekt über den ID-string aus der Liste laden.
Und die Liste nach den ID's sortieren wäre noch eine super Funktion.

Gibt's da schon was, oder selber machen?

lg

21.11.2007 - 12:00 Uhr

running, thx

21.11.2007 - 10:29 Uhr

Hallo!

Ich spiele grade mit dem CodeDom-Compiler und stehe vor folgendem Problem:
Ich habe ein Interface

public interface IScript
{
    void  TestFunction(object Param);
}

und dann lade ich das compilierte Script

IScript script =  _CompilerResults.CompiledAssembly.CreateInstance("mySoft.scripts.testscript") as IScript;

und kann dann auf

script.TestFunction(new object());

zugreifen und alles läuft perfekt. Um das ganze allerdings dynamisch zu halten bräucht ich eine Funktion wie

object script.Run(string Method, object[] Params);

Hoffe ihr habt da Vorschläge.

lg

05.11.2007 - 11:31 Uhr

Hallo!

Sorry, aber ich der Punkt steht noch auf meiner Todo-Liste. Wenn ich dazu komme und Erfolg habe poste ich es natürlich.

Lg

15.09.2007 - 17:57 Uhr

Hallo!
Besteht in C#.NET die Möglichkeit von einer Anwendung aus über TCP direkt auf Objekte in einer anderen Anwendung auf einem anderen Computer zuzugreifen?
So OODB mäßig?

lg

13.09.2007 - 13:09 Uhr

Hallo!

Ich habe das Problem, dass ich über einen smtp-Server mails versenden will, der bei helo oder ehlo den Fehler "501 Syntactically invalid HELO argument(s)" bringt...

Das ist mal wieder eines meiner Delphi-Projekte, das ich in C#.NET neu geschrieben habe...
Und im Delphi konnte ich das Senden des helo bzw. ehlo-Befehls ausschalten...

Wie in .NET?

Dank

13.09.2007 - 11:47 Uhr

AHH! 8o
Wer lesen kann ist klar im Vorteil...
Runnig 😁

13.09.2007 - 10:52 Uhr

Hallo Leute!

Ich steh irgenwie grad voll auf der Leitung:
Hab in einem Service von mir das gleiche Problem - Timer wir gestertet und macht nix...
Hab's dann in einem neuen Service kleiner nochmal versucht aber da haut was nicht hin:


namespace WindowsService1
{
    public partial class TestService : ServiceBase
    {
       EventLog evtApp = new EventLog("Application");

        public TestService()
        {
            InitializeComponent();
            evtApp.Source = "TestService-Log";
        }

        protected override void OnStart(string[] args)
        {
            evtApp.WriteEntry("start");
            timer1.Interval = 1000;
            timer1.Start();
        }

        protected override void OnStop()
        {
            timer1.Stop();
            evtApp.WriteEntry("stop...");
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            evtApp.WriteEntry("timer1_Tick");
        }
    }
}

Habe natürlich auch schon mit timer1.Enabled gespielt, aber nix passiert...
"start" und "stop" stehen im Event-Log, und wenn ich timer1_Tick() starte macht er es auch...
Nur der Timer macht nix...

Vorschläge?

13.09.2007 - 09:39 Uhr

Es gibt 100% eine Möglichkeit dem Outlook zu sagen, dass es eine pst-Datei öffnen soll.
Hab sowas in der Art mal in Delphi gemacht und da gings...

12.09.2007 - 15:37 Uhr

Hallo!

Such mal MSDN durch...

Hab da neulich zufällig was gefunden wie der Zugriff auf ein PST-File total simpel ist...
Sollte ich es wieder finden melde ich mich natürlich sofort...

12.09.2007 - 15:22 Uhr

Hallo Leute!

Ich spiele grad etwas mit VSTO in Office 2007...

Menü Reduzieren/erweitern funktioniert via xml ja schon ganz gut, aber das ist eigentlich nicht der Weg den ich gehen will.

Daher suchte ich verzweifelt nach Microsoft.Office.Interop.Word.Application.Ribbon.Add(meineLeiste) oder so…

Gibt’s da was oder geht das nur mit dem xml-File?

06.09.2007 - 14:32 Uhr

Dank für die Tipps!

Spiele grad mit VSTO...

An Access denke ich momentan noch nicht, aber ich werd mir die SetParent-Funktion auch mal anschauen...

Meine letzte Office-Steuerung hab ich noch in Delphi gemacht - und gab’s immer schon etwas Stress, wenn z.B. Word einmal "normal" und ´einmal "gesteuert" offen war...

Hoffe da hat sich sei O2K was getan...

LG

03.09.2007 - 13:27 Uhr

Hallo Leute!

Bin vor kurzem von Delphi auf C# umgestiegen - Also bitte nicht zu hart sein 🙂
Der Anhang zeigt eigentlich schon genau, was ich will:
Ich möchte Office-Fenster in meiner Applikationen z.B. als MDI-Fenster anzeigen und natürlich auch steuern…
Möglich ist das ja wie man sieht, aber ich habe noch keine wirklichen Informationen dazu gefunden – Oder einfach falsch gesucht…
Hat jemand Erfahrung oder Infos für mich?

Danke