Laden...

Forenbeiträge von dust258 Ingesamt 32 Beiträge

26.08.2015 - 11:48 Uhr

Die Idee mit dem Lockscreen finde ich super. Sollte auch möglich sein wenn ich die Bilder auf Anfrage online bereitstelle siehe. Schau ich mir auf jeden Fall an. Dann kann ich auch direkt ne Live-Kachel erstellen.

  • Auflösung filtern: Ja, hab ich auch schon gedacht.
  • Favoriten: Dazu muss ich erst nen Login implementieren. Vielleicht für v2.0

@LaTino: Stimmt schon. Das Design erinnert noch stark an die Standard-Templates.

Einstampfen ist vielleicht etwas hart. Wie du schon sagst: Für mich läuft es ja.

Schon mal danke für's Feedback 👍

26.08.2015 - 09:43 Uhr

Hey Leute,
ich habe die letzten Wochen eine Diashow-App (mit Onlinequellen wie DeviantArt als Quelle) gebaut, lauffähig unter Windows RT, 8, 10.

Die Grundidee war meinem alten Surface RT (mit kaputten Touchscreen) noch ein 2. Leben als Bilderrahmen zu geben. Außerdem spiele ich gerne Musik auf meinem Fernseher ab, und da machen sich ein paar Bilder besser als der Desktop. Um nicht ewig irgendwelche Wallpaper zu suchen sollte die App ihre Bilder direkt online beziehen.
Außerdem brauchte ich ein kleines Projekt um die App-Entwicklung unter Windows 8 mal auszuprobieren.

Die ersten Rezensionen waren allerdings unterirdisch (1 Stern, "Nutzlos"). Was meint Ihr? Ist die Idee einfach überflüssig und sollte ich dementsprechend die Reißleine ziehen? Sollte ich das Design und die Handhabung noch mal überarbeiten? Welchen Eindruck mach die App auf euch?

Link zum Windows Store

Seite mit Screenshots der app: Slideshow.OnEcstasy.com

16.11.2012 - 14:20 Uhr

Hab es schon gelöst:

  
modelBuilder.Entity<KONTAKTE>()
                .HasRequired(b => b.KUNDEN)
                .WithMany()
                .HasForeignKey(b => b.KUNDENNR);
  
16.11.2012 - 09:53 Uhr

verwendetes Datenbanksystem: Firebird 2.5, Entity Framework 5, FirebirdClientDll 3.0.0.0

Hi Leute, ich möchte eine alte Datenstruktur über es Entity Framework (Code First) ansprechen. So habe ich einfach mehr Möglichkeiten auf die alte Struktur zu reagieren.
Ein Problem dabei ist, das in der Datenbank nicht mit foreign keys gearbeitet wird. Diese Verbindungen möchte ich aber trotz dem in meinem Context bereitstellen.

    public class KUNDEN
    {
        public int KUNDENNR { get; set; }
        public string KUNDNAME { get; set; }
    }

    public class RECHNUNGEN
    {
        public int RECHNUNGNR{ get; set; }
        public int KUNDENNR{ get; set; }

        public virtual KUNDEN KUNDEN { get; set; }
    }

    public class RechnungsContext : DbContext
    {
        public DbSet<RECHNUNGEN> RECHNUNGEN { get; set; }
        public DbSet<RECHNUNGEN> KUNDEN { get; set; }

        public CTKontakt(DbConnection connectionString) : base(connectionString, false)
        {
            Database.SetInitializer<CTKontakt>(null);
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            
            /*modelBuilder.Entity<RECHNUNGEN>().HasRequired(b => b.KUNDEN)
                        .WithMany()
                        .Map(p => p.MapKey("KUNDENNR"));*/ //Fehler: Der Eigenschaftsname 'KUNDENNR' war bereits definiert

            modelBuilder.Entity<RECHNUNGEN>().HasKey(a => new { a.RECHNUNGNR, a.KUNDENNR});     
            modelBuilder.Entity<KUNDEN>().HasKey(a => new { a.KUNDENNR });

            base.OnModelCreating(modelBuilder);
        }
    }

Normalerweise würde ich einfach die Property KUNDENNR aus der Klasse RECHUNGEN entfernen, aber sie ist Teil des Primärschlüssels...

Ich habe gelesen das so eine Verbindung früher mit IsIndependent beschrieben wurde, aber die Methode gibt es mit dem EF 5 nicht mehr...
Ich bin noch relativ neu im Thema Entity Framework. Hat Jemand eine Idee?

05.11.2012 - 09:06 Uhr

Hallo Leute,
ich möchte demnächst einen Service schreiben um verschiedene Clients mit daten zu versorgen (Android, IOS, Modern-UI, ...).

Da auch "Nicht .net Anwendungen" unterstützt werden sollen, kommt der normale .Net / SOAP Service nicht in Frage. Rest und Dataservice sehen aber sehr gut aus.

Im moment tendiere ich zu einer hybriden Lösung (DataService für Stammdaten, Rest für Objekte mit Logik).

Ich vermute einfach das ich "nur" mit einem Dataservice einfach zu viel Logik (z.B. Validierung) auf den Client auslagern muss. Was denkt ihr, wo liegen die Grenzen eines Dataservice?

09.05.2012 - 15:04 Uhr

Aber der Link hat mir trotzdem geholfen:

        private void RegisterDataProvider()
        {
            try
            {
                var dataSet = ConfigurationManager.GetSection("system.data") as System.Data.DataSet;
                dataSet.Tables[0].Rows.Add("FirebirdClient Data Provider"
                , ".Net Framework Data Provider for Firebird"
                , "FirebirdSql.Data.FirebirdClient"
                , "FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=2.7.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c");
            }
            catch
            { }
        }

Einfach beim Aufruf der DLL ausführen und der DataProvider wird temporär in die Konfiguration geschrieben. Ist zwar nicht die sauberste Lösung, aber immerhin eine Lösung.

D A N K E

09.05.2012 - 11:54 Uhr

Hmmm, ich bin noch ziemlich unerfahren wenn es um das Entity Framwork geht. Ich dachte ich benötige die Providerfactory damit mein EntityDataModel (KundenEntities) auf die Datenbank zugreifen kann.

Folgenden Connection-String gebe ich an das EntityModel:

metadata=res://*/Data.KundenModel.csdl|res://*/Data.KundenModel.ssdl|res://*/Data.KundenModel.msl;provider=FirebirdSql.Data.FirebirdClient;provider connection string=\"dialect=3;initial catalog=127.0.0.1:D:\\Datenbanken\\Test.GDB;user id=SYSDBA;password=xxxxxx\"
09.05.2012 - 08:16 Uhr

Ich?

Mal zur Erklärung. Es handelt sich um einen Export von Daten an einen WCF-Service (daher in C# und nicht Delphi). Normalerweise würde man die entsprechenden Daten einfach per Parameter an die Dll übergeben und dann übertragen.
Allerdings muss ich in diesem Fall schnell und ohne eine neue Auslieferung des Hauptprogramms auf Änderungen reagieren können.

Daher muss auch der Abruf der Daten in der DLL stattfinden...

Edit:
Oder meinst du wofür der Zugriff benötigt wird? Ich benutze das Entity Framework. Hier mein Aufruf:

                EntityConnectionStringBuilder ecsb = new EntityConnectionStringBuilder();
                ecsb.Metadata = @"res://*/Data.KundenModel.csdl|res://*/Data.KundenModel.ssdl|res://*/Data.KundenModel.msl";
                ecsb.Provider = @"FirebirdSql.Data.FirebirdClient";
                ecsb.ProviderConnectionString = ProviderConnectionString;

                PersonalEntities pe = new PersonalEntities(ecsb.ConnectionString); //Hier kommt der Fehler

                IQueryable<IPERSONAL> result = from personal in pe.PERSONAL
                                               where personal.PERSONALNR == personalNummer
                                               select personal;
         
                IPERSONAL newMitarbeiter = result.First();

08.05.2012 - 17:04 Uhr

Hallo Leute,
ich habe eine ActiveX-Dll für eine Delphi-Applikation geschrieben. Der Aufruf funktioniert auch sehr gut, nur beim Zugriff auf meine Datenbank bekomme ich Probleme. Wenn ich die Applikation auf einem Client aufspiele kann ich keine Datenbankverbindung aufbauen...

Auf meinem Entwickler-PC funktioniert alles super. Der Provider ist in der machine.config installiert.

<add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".Net Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=2.7.5.0, Culture=neutral, PublicKeyToken=4750abcc3160b00d"/>

Nur auf meinem Client bekomme ich Probleme. Meldung:> Fehlermeldung:

The specified store provider cannot be found in the configuration, or is not valid.

Normalerweise müsste der Firebird Data Provider in meiner App.Config eingetragen werden. Allerdings gibt es keine solche Datei wenn ich mit Delphi/AciveX arbeite.

Gibt es eine Möglichkeit einen Provider Hard-Codiert zu hilterlegen? Was währe die Alternative, ich kann ja nicht einfach an machine.config meines Clients herumpfuschen?

04.05.2012 - 13:21 Uhr

Danke für die Antworten!
@herbivore: Stimmt, aber ich solle die Möglichkeiten schon kennen um einschätzen zu können ob sie nötig sind. Daher das Testprojekt ^^

@gfoidl: Das sieht sehr gut aus, ich werde mich mal einarbeiten.

04.05.2012 - 10:24 Uhr

Hallo Leute,
ich arbeite im Moment an einem Testprojekt für eine 3-Layer Architektur. Es handelt sich dabei zunächst um eine kleine Adressverwaltung.

Jede Schicht greift auf die darunterliegende über ein Interface zu. Die Business-Schicht leitet die Objekte aus dem Data-Layer weiter. Hier (in der Business-Schicht) sollten später Validierung und Filterung stattfinden. Durch das Save im Datalayer werden alle Änderungen in die Datenbank übernommen.

    public interface IBusinessRepositoryAdressen
    {
        IQueryable<IAdressen> Get();

        Boolean Save();

        IAdressen Create();
    }
    public interface IDataRepositoryAdressen
    {
        IQueryable<IAdressen> Get();

        void Save();

        IAdressen Create();
        void Add(IAdressen adr);
        void Delete(IAdressen adr);
    }
    public interface IAdressen
    {
        int ID { get; set; }
        string Name { get; set; }
        string Vorname { get; set; }
        string Strasse { get; set; }
        string PLZ { get; set; }
        string Ort { get; set; }
    }

Im Data-Layer werden die Adressobjekte aus der Datenbank mit Hilfe des Entity-Frameworks erzeugt:

        private static IQueryable<IAdressen> Get(AdressenEntities ae)
        {
            IQueryable<IAdressen> result = from adresse in ae.Adressen
                                           select adresse;
            return (IQueryable<IAdressen>)result;
        }

Die durch das EF erzeugten Objekte werden also in allen Schichten verwendet (durch das Inteface haben die oberen Schichten allerdings keinen Zugriff auf die EF-Logik.
Ich bin mir allerdings nicht sicher ob eine so enge Bindung das das EF bei einer größeren Anwendung zu Problemen führen könnte. Viele Quellen raten davon ab die Datenbankentitäten aus dem O/R-Mapper in den oberen Schichten zu verwenden.

Nur was stellt die Alternative dar? Durch mein derzeitiges Konzept kann (dank IQueryable) die Filterung der Daten in der Business-Schicht erfolgen. Da es sich um eine Neuentwicklung handelt entsprechen meine Business-Objekte 1:1 den Datenbanken. Entsprechende Unterschiede kann ich immer noch durch eine partielle Klasse ausgleichen.

Nach meinem jetzigen Verständnis müsste ich ein Business-Adressen-Objekt erzeugen, welches fast 1:1 der vom EF erzeugten Klasse entspricht. Dann müsste ich (in meinem Fall in der Business-Schicht) nach dem Filtern, aus den Datenbankentitäten die Business-Adressen-Objekte erzeugen (Mappen).

Das erscheint mir allerdings im Anbetracht des geringen Nutzen sehr viel Arbeit. Damit meine ich nicht nur aus Code-Sicht sondern auch den Performance-Verlust der durch das Mappen entsteht.

Wie sind euere Erfahrungen? Kapselt/Mappt ihr eure Datenbankentitäten?

08.02.2012 - 11:01 Uhr

Ich habe den Fehler gefunden. Offenbar war auf beiden Rechnern das Tool "ShortCut" (Version 3.5 von 2005) installiert. Shortcut scheint in dieser Version nicht mit WPF kompatibel zu sein...

D A N K E für die Hilfe!

08.02.2012 - 10:03 Uhr

Hmmm, daraus werde ich auch nicht schlau...

>	mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x6a bytes	
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool ignoreSyncCtx) + 0x7e bytes	
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x2c bytes	
 	WindowsBase.dll!System.Windows.Threading.DispatcherOperation.Invoke() + 0x68 bytes	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.ProcessQueue() + 0x15e bytes	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.WndProcHook(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam, ref bool handled) + 0x63 bytes	
 	WindowsBase.dll!MS.Win32.HwndWrapper.WndProc(System.IntPtr hwnd = 460334, int msg = 49539, System.IntPtr wParam = 0, System.IntPtr lParam = 0, ref bool handled = false) + 0xbe bytes	
 	WindowsBase.dll!MS.Win32.HwndSubclass.DispatcherCallbackOperation(object o) + 0x7d bytes	
 	WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback, object args, int numArgs) + 0x53 bytes	
 	WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source = {System.Windows.Threading.Dispatcher}, System.Delegate method, object args, int numArgs, System.Delegate catchHandler = null) + 0x42 bytes	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority priority, System.TimeSpan timeout, System.Delegate method, object args, int numArgs) + 0xb4 bytes	
 	WindowsBase.dll!MS.Win32.HwndSubclass.SubclassWndProc(System.IntPtr hwnd = 460334, int msg = 49539, System.IntPtr wParam = 0, System.IntPtr lParam = 0) + 0x104 bytes	
 	[Native to Managed Transition]	
 	[Managed to Native Transition]	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame frame = {System.Windows.Threading.DispatcherFrame}) + 0xc1 bytes	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame frame) + 0x49 bytes	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.Run() + 0x4c bytes	
 	PresentationFramework.dll!System.Windows.Application.RunDispatcher(object ignore) + 0x17 bytes	
 	PresentationFramework.dll!System.Windows.Application.RunInternal(System.Windows.Window window) + 0x6f bytes	
 	PresentationFramework.dll!System.Windows.Application.Run(System.Windows.Window window) + 0x26 bytes	
 	PresentationFramework.dll!System.Windows.Application.Run() + 0x1b bytes	
 	WpfEdit2.exe!WpfEdit.App.Main() + 0x4c bytes	C#

Edit: ich habe auf dem Rechner grade mal das .Net Framework entfernt (mit dem cleanuptool) und neu installiert, kein Unterschied.

08.02.2012 - 08:11 Uhr

Eben nicht, wenn ich auf "View Detail..." klicke kann ich das Treeview nicht öffnen und darin steht nur "{Cannot evaluate expression because the current thread is in a stack overflow state.}"

07.02.2012 - 16:15 Uhr

Komme leider nicht so weit:
{Cannot evaluate expression because the current thread is in a stack overflow state.}

07.02.2012 - 15:14 Uhr

Komisch, der Fehler tritt auch auf einem 2. Testrechner auf. Ich habe mich per remote debugging an den Prozess an gehangen und folgende Meldung bekommen:

An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll

06.02.2012 - 08:33 Uhr

Japp, das war auch meine Überlegung. Es wäre allerdings trotzdem schön den Fehler zu finden. Ich würde einfach gerne ausschließen das ich hier einen Fehler gemacht habe.

Ich denke ich werden nochmal ein Beispielprojekt auf einem anderen Rechner erzeugen und dann testen.

03.02.2012 - 15:07 Uhr

Hallo Leute,
ich habe in den letzten Wochen eine größere WPF-Applikation entwickelt und teste sie nun auf verschiedenen Systemen. Auf einem einzigen Client habe ich folgenden Fehler:

Sobald 2 Zeichen hintereinander in eine Textbox eingetragen werden schmiert die Anwendung ab (Programm kann nicht weiter ausgeführt werden).
Das Ganze konnte ich sogar in einem Testprojekt nachstellen in dem sich nur eine Textbox auf einem Formular befindet (ohne weiteren Code).

Framework: .NET 4
erstellt mit Visual Studio 2010 Ultimate
Clientrechner: Vista Business 32 bit

Ich habe mein folgendes Probiert:

  • Testprojekt auf Virtueller Maschine (Win XP SP2 saubere Installation) ausgeführt --> Keine Probleme nach Installation von .NET4

  • Neuinstallation des .Net 4 Frameworks auf Client --> keine Änderung

  • Compilieren mit .Net 3.5 --> keine Änderung

Hättet Ihr eine Idee was das sein könnte, bzw. wie ich den Fehler weiter debuggen könnte? Ich habe mal was vom Remote-Debugging gehört, wäre das eine Lösung? (der Client hängt am gleichen Netzwerk)

Im Anhang findet Ihr das Testprojekt, obwohl es relativ uninteressant ist. Ist halt nur eine neue WPF-Appliaktion mit 2 Textboxen

EDIT:
Ich habe den Fehler gefunden. Offenbar war auf beiden Rechnern das Tool "ShortCut" (Version 3.5 von 2005) installiert. Shortcut scheint in dieser Version nicht mit WPF kompatibel zu sein...

D A N K E für die Hilfe!

23.08.2011 - 11:45 Uhr

OK, hab es selbst gefunden. Unglaublich, da sucht man stundenlang nach einer Lösung und immer wenn man nen neuen Foreneintrag schreibt kommt man selbst auf die Lösung:

            <HierarchicalDataTemplate x:Key="DienstDetailTemplate" DataType="{x:Type sys:String}">
                <StackPanel>
                    <TextBlock Text="{Binding}"/>
                </StackPanel>
            </HierarchicalDataTemplate>
23.08.2011 - 11:13 Uhr

Danke für die Tipps. Nach gefühlten 100 Versuchen bin ich aber immer noch nicht am Ziel.

Das Ergebnis soll einmal so aussehen:

>Dienst1
Status
Einstellungen
>Dienst2
Status
Einstellungen

Mit dem folgenden XAML-Code funktioniert das auch schon ganz gut:

<UserControl x:Class="lwdienstverwaltungapl.UCTreeViewView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:src="clr-namespace:lwdienstverwaltungapl"
             xmlns:coll="clr-namespace:System.Collections;assembly=mscorlib"
             xmlns:sys="clr-namespace:System;assembly=mscorlib">

    <StackPanel>
        <StackPanel.Resources>

            <coll:ArrayList x:Key="EigCollection">
                <sys:String>Status</sys:String>
                <sys:String>Einstellungen</sys:String>
            </coll:ArrayList>

            <HierarchicalDataTemplate x:Key="DienstDetailTemplate">
                <StackPanel>
                    <TextBlock Text="Status/Einst/Pfade"/>
                </StackPanel>
            </HierarchicalDataTemplate>
            
            <HierarchicalDataTemplate x:Key="DienstTemplate"
                DataType="{x:Type src:ClassTreeViewModel}"
                                  ItemTemplate="{StaticResource DienstDetailTemplate}"
                                      ItemsSource="{Binding Source={StaticResource EigCollection}}">
                    <TextBlock Text="{Binding Path=SDisplayName}"></TextBlock>
            </HierarchicalDataTemplate>            
        </StackPanel.Resources>

        <TreeView Height="200" ItemTemplate="{StaticResource DienstTemplate}" ItemsSource="{Binding Path=Dienste}">
               

        </TreeView>
    </StackPanel>
</UserControl>

Wie ihr seht ist mein einziges Problem die "Statischen" Items zu den Diensten darzustellen. Hat vielleicht noch Jemand eine Idee wie ich bei "<TextBlock Text="Status/Einst/Pfade"/>" ein Binding realisieren kann, das den Text aus dem statischen Array anzeigt?

Oder habe ich noch einen Denkfehler wenn mich meine statischen Items zu den dynamischen Punkten darstellen lassen möchte?

16.08.2011 - 10:51 Uhr

Hallo Leute,
ich habe ein (hoffentlich) kleines Problem mit dem TreeView. Ich möchte eine Liste von Punkten Dynamisch anzeigen lassen und zu jedem Punkt 3 feste Unterpunkte.

Wenn ich die Beispielwerte manuell im Designer hinterlegt funktioniert auch alles perfekt. Nur wenn ich die Items über das Data-Binding lade sind die Unterpunkte nicht mehr selektierbar...

Hier mein XAML-Code:


<UserControl x:Class="verwaltungapl.UCTreeViewView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:src="clr-namespace:verwaltungapl">

    <Grid Height="297" Width="237">
        <Grid.Resources>
            <HierarchicalDataTemplate x:Key="Template">
                <TreeViewItem Header="{Binding Path=SName}">
                    <TreeViewItem Header="Status" IsSelected="{Binding Path=IsSelected, Mode=TwoWay}" /> //Zum Testen, kein Unterschied zu den anderen Punkten
                    <TreeViewItem Header="Pfade" />
                    <TreeViewItem Header="Einstellungen" />
                </TreeViewItem>
            </HierarchicalDataTemplate>
        </Grid.Resources>
        <DockPanel >
            <TreeView Name="_myTreeView"
                      Margin="0,0,0,0" 
                      ItemsSource="{Binding Dienste}" 
                      ItemTemplate="{StaticResource Template}">

            </TreeView>
        </DockPanel>
    </Grid>
</UserControl>

Hoffe es kann mir Jemand helfen. Ich bin leider noch ein WPF-Neuling 😉

Status, Pfade und Einstellungen sollten mit der Maus selektierbar sein...

09.08.2011 - 10:46 Uhr

Danke für die Hilfe.

Der Fehler lag allerdings darin, das ich Attribut und Element vertauscht habe:

            var ItemCollection = from Item in xdoc.Descendants("Item")
                                 where Item.Attribute("id") != null && Item.Attribute("name") != null
                                  select new XMLItem
                                  {
                                      Id = Item.Attribute("id").Value,
                                      Name = Item.Attribute("name").Value
                                  };
09.08.2011 - 10:26 Uhr

Hallo Leute,
ich arbeite mich im Moment ein wenig in LINQ to XML ein (anhand verschiedener Tutorials). Dafür habe ich folgenden Beispielcode geschrieben:

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            string xmlFileName = "test.xml";
            XDocument xdoc;

            if (File.Exists(xmlFileName))
            {
                xdoc = XDocument.Load(xmlFileName);
            }
            else
            {
                xdoc = new XDocument(
                    new XElement("TextXMLDoc",
                        new XElement("Liste",
                            new XElement("Item",
                                new XAttribute("id", "A"),
                                new XAttribute("name", "Wert1")),
                          
                            new XElement("Item",
                                new XAttribute("id", "B"),
                                new XAttribute("name", "Wert2")
                              )
                        )
                    )
                 );
            }


            var ItemCollection = from Item in xdoc.Descendants("Item")
                                  where Item.Element("id") != null && Item.Element("name") != null
                                  select new XMLItem
                                  {
                                      Id = Item.Element("id").Value,
                                      Name = Item.Element("name").Value
                                  };


            foreach (XMLItem item in ItemCollection)
            {
               MessageBox.Show(item.Name); //Hier sollte eine Message ausgegeben werden, passiert aber nix
            }
            xdoc.Save(xmlFileName);
        }
    }
    public class XMLItem
    {
        public string Id
        {
            get;
            set;
        }

        public string Name
        {
            get;
            set;
        }
    }

Die XML wird am Ende ordnungsgemäß abgespeichert:

 <?xml version="1.0" encoding="utf-8" ?> 
- <TextXMLDoc>
- <Liste>
  <Item id="A" name="Wert1" /> 
  <Item id="B" name="Wert2" /> 
  </Liste>
  </TextXMLDoc>

Die "ItemCollection" ist allerdings leer... Kann mir Jemand sagen welchen Fehler ich mache?

07.06.2011 - 16:37 Uhr

legt sich nicht auf einen konkreten Algorithmus fest

Ach so, das hilft mir weiter. DANKE 👍

07.06.2011 - 10:19 Uhr

Danke für die Antwort.

Ich spekulier mal:
RSA/SHA1 Basiert immer noch auf dem Kryptographischen Verfahren RSA, PKCS7/SHA1 ist ein eigenständiger Standart für die Signatur.

Also würde ich vermuten das PKCS7 in der Lage ist Signaturen zu erstellen auch wenn nicht direkt auf den Private Key zugegriffen werden kann.
Dies währe z.B. bei der Nutzung einer SSEE (Sicher Signaturerstellungseinheit) der Fall. Hier ist die Schlüsselkarte mit einem PIN (also ein synchrones Verschlüsselungsverfahren) gesichert. Nach Eingabe des PIN erhält man einen generierten Session Key, der Zugriff auf den Privaten Schlüssel bleibt also verwehrt.

Das ganze ist NUR EINE VERMUTUNG nach dem was ich bis jetzt gelesen habe. Leider sind die meisten Quellen nicht detailliert genug...

Welche Verfahren dabei genau zum Einsatz kommen wäre natürlich noch interessant.

03.06.2011 - 10:15 Uhr

Hallo Leute,

Ich arbeite im Moment an der digitalen Signatur von PDF-Dokumenten. Dabei benutze ich die Komponente PDF-Blackbox.

Ich habe allerdings ein kleines Verständnisproblem. Nach meiner Auffassung sind für eine digitale Signatur ein Hash-Algoritmus und ein asynchrones Verschlüsselungsverfahren nötig. Es wird ein Hash-Wert des zu signierenden Dokumentes errechnet und mit dem privaten Schlüssel aus dem Zertifikat verschlüsselt.

Die Komponente bietet hier RSA+SHA1 an. Der Vorgang kann also wie folgt dargestellt werden (Viso 2010 ist toll 😄)
*siehe Anhang

Die Komponente bietet allerdings auch die Kombination PKCS7+SHA1 an. Soweit ich gelesen habe handelt es sich hierbei um ein hybrides Verschlüsselungsverfahren (also eine Kombination aus synchroner und asynchroner Verschlüsselung).

Meine Fragen:

  1. Wie unterscheidet sich PKCS7 von einer RSA Signatur?
  2. Welche Verschlüsselungsverfahren werden genau angewandt?
  3. Wo wird bei der Signatur noch ein synchrones Verfahren benötigt?
  4. Ist meine Beschreibung von RSA+SHA1 so korrekt?

Hoffentlich kann mir da Jemand helfen, obwohl das schon ziemlich ins Detail geht...

03.01.2011 - 19:36 Uhr

verwendetes Datenbanksystem: Firebird 2.1

Nabend,

hat Jemand von euch schon das Projekt "DBLinq" getestet? Laut Beschreibung unterstützt dieser Linq-Provider mittlerweile auch Firebird. Leider ist die Beschreibung zur Installation recht ungenau (oder ich bin einfach zu doof dafür). Funktioniert das beich euch und ist es praktikabel?

Das währe ja der Hammer wenn ich Firebird mit Linq nutzen könnte ^^

DBlinq 2007

30.12.2009 - 19:33 Uhr

Das habe ich wohl zu umständlich erklärt 😁

Ich der Wochenansicht soll jeder Termin mithilfe eines eigenen MDI-Childs dargestellt werden. Also müssen diese Termine in jedem Fall im Vordergrund bleiben.

Edit: Aber SendToBack im OnClick des Grids funktioniert, D A N K E ^^

30.12.2009 - 17:13 Uhr

Nabend,

ich hab mal wieder ein mehr oder weniger schwieriges Problem:

Ich schreibe derzeit an einem Kalender (als Testprojekt, ich bin eigentlich eingefleischter Delphi-Programmierer).

Jetzt möchte ich im Hintergrund ein Grid als Wochenansicht anzeigen lassen. Darauf sollen dann als MDI-Childs die verschiedenen Termine erscheinen.
Ich hatte zunächst mit einfachen Panels gearbeitet, ich möchte allerdings mit den Resize-Events der Clients arbeiten...
Nun habe ich aber das Problem das ich es einfach nicht schaffe das Grid im Hintergrund anzuzeigen und die Clients darauf...

Zunächst hatte ich das Grid einfach in den Hintergrund gelegt und dann die Clients auf dem Formular erzeugt. Allerdings bleibt das Grid in diesem Fall immer dominant und scheint durch die Clients durch.

Dann habe ich das Grid in einen eigenen Client gepackt. Daraus ergibt sich allerdings das Problem das "TopMost" unter den Clients nicht funktioniert und bei einem Klick auf das Grid alle Termine in den Hintergrund verschoben werden. Bis jetzt konnte ich das Ganze nur lösen, indem ich das Grid auf "Enabled = false" gesetzt habe.

Hat vielleicht Jemand eine andere Idee wie ich die Termine vor dem Grid anzeigen lassen könnte, bei der das Grid aktiv bleibt?

21.12.2009 - 16:46 Uhr

Hallo Leute,

ich schreibe im Moment an einem Kalender (ist ein Übungsprojekt da ich gerade erst von Delphi auf C# umgestiegen bin ^^)

Ich möchte für die Wochenansicht ein DataGridView anzeigen lassen. das nur einen kleinen Hinweis als Text enthält, und beim Klick dann ein Panel mit Informationen anzeigt.)

Das funktioniert schon mal (zumindest nach dem was ich bis jetzt getestet habe) ziemlich gut. Die Daten für das DataGrid kommen aus einer ArrayList:

Nur habe ich noch das Problem das die Zeiten einfach nur als Felder angezeigt werden (siehe Bild). Ich finde keine Option mit der ich den Inhalt der 1. Spalte als Zeilenname anzeigen lassen könnte. Funktioniert das überhaupt mit dem DataGridView, oder brauche ich vielleicht eine andere Komponente?

17.12.2009 - 11:35 Uhr

Danke euch allen ^^

Jetzt funkioniert es:

public class EntryPanel : Panel
    {
        public EntryPanel()
        {
           
        }

        private List<Label> Values = new List<Label>();

        public void addValue (String inSText)
        {
            Label lbValue = new Label();
            lbValue.Text = inSText;
            lbValue.Parent = this;
            Values.Add(lbValue);
            this.Controls.Add(Values[Values.Count -1 ]);
            for (int counter = 0; counter < this.Controls.Count; counter++)
            {
                this.Controls[counter].Left = 10;
                this.Controls[counter].Top = (counter) * 25;
                this.Height += 25;
            }
        }
    }
17.12.2009 - 10:11 Uhr

Hallo Leute,
als eingefleischter Delphi-Programmierer arbeite ich mich in den letzten Wochen langsam in C#. Daher auch mein 1. Eintag in diesem Forum =). Als Testprojekt arbeite ich an einer Kalenderschnittstelle für die Google-Kalender-API.

Dafür brauche ich ein Panel das ich zur Laufaufzeit kreiere und dem ich Werte in Form von Labels zuweisen kann.

Ich habe also testweise das ein "EntryPanel" von "Panel" abgeleitet und ihm die Funktion "addvalue" hinzugefügt.


public class EntryPanel : Panel
    {
        public EntryPanel()
        {
           
        }

        private List<Label> Values = new List<Label>();

        public void addValue (String inSText)
        {
            Label lbTitle = new Label();
            Values.Add(lbTitle);
            Values[Values.Count-1].Left = 1;
            Values[Values.Count-1].Top = 10 * this.Controls.Count;
            Values[Values.Count-1].Parent = this;
            Values[Values.Count-1].Text = inSText;
        }
    }

Der Aufruf sieht folgendermaßen aus:

entryPanel1.addValue("1");

Ich kann addValue leider du 1x ausführen. Danach passiert nichts mehr... Was mache ich falsch?

Könnte es vielleicht helfen wenn ich meinen PC einfach aus dem 1. Stock schmeiße?