Zum Inhalt springen

Mcolli

Mitglieder
  • Gesamte Inhalte

    103
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Mcolli

  1. Also zwei sicher Möglichekiten kenn ich: 1. Divisions Test: Angenommen Du Willst wissen ob "x" eine Primzahl ist. dann Prüfst Du einfach ob es ein "y" gibt mit 1 < y < x für das gilt x mod y = 0; Das ganze lässt sich durch asuprobieren in einer Schleife realisieren und durch bestimmte Überlegungen verfeinern .... Stichwort Primfaktor zerlegung. 2. Sieb des Eratosthenes : Dies ist ein wesentlich effizienteres verfahren, welches Für Deinen Fall genau das richtige ist. Wenn Du den Wiki artikel anschaust findest Du auch nen fertigen Algo dazu ... k.a. ob Du direkt den Algo wissen willst ... aber musst ja nicht so weit runter Scrolen. Wenn Du Dich wieder besseren Wissen für 1. entscheidest überleg Dir wie Die schleife aussehen soll um die Primzahlen bis n zu finden (ich mein nicht den Test): int summe = 0; int N = 10000; // obergrenze for (x = 2; x < n; x++) { if (istPrim(x)) then { summe += x; } } Du könntest Dir gedanken machen, welche x man ohne istPrim(x) aufzurufen übergehne kann. Mit High Level Programmier skillst und einem entsprechenden mehr Kernigen Rechner kannst Du bei diesem Verfahren auch einfach auf mehrere Threads bauen und den rechen aufwand bei geschickter Aufteilung so um den Faktor "Anzahl der Kerne" verringern.
  2. Jo da hatttttaaaaaa Recht. Meine Kaffee Maschine ist kaputt ... da kann ich morgens nicht richtig lesen :old
  3. Mcolli

    Verschieben der ntldr

    ah jo danke, bcedit scheint das richtige zu sein um den ganzen Bootquatsch zu verschieben. Windows XP als OS brauch ich eh nicht mehr .... bisher halt nur die bei der Windows 7 Installation überschriebenen Boot-Dateien dort. Bevor ich das aber mache erstelle ich mal lieber ein Backup von Win 7.
  4. Also schön dass Du Dein Problem gelöst ... und sry für die Späte Antwort Zu der Ent.Lib nochmal: Die 5er Version davon geht nur mit Visual Studio 2010, Windows7 und .NET Framework 4.0. Du müsstest die 4er Version nehmen .... ich weiss allerdings ob das Probleme mit dem VS Express gibt.... schlimmsten falls kannste die "komfort" Plugins nicht nutzen wie ein Grafischer Editor für die "App.config" die man sonst nur als xml Datei angezeigt bekommt.... also nun zum Handwerklichen -Du öffnest den "Projektmappen Explorer" (Ist standart mäßig auf der rechten Seite angedockt wenn nicht unter "Ansicht" - "Projektmappen Explorer") - Rechts auf "Verweise" clicken und dann "Verweis hinzufügen" auswählen - Im folgenden Dialog dann unter dem reiter "NET" die benötigten "Assembly" (auch Verweiss oder DLL genannt) suchen. Die heissen entweder "Enterprise Library BlaBlub Apllication Block" oder "Microsoft Practices.blabla" musste bischen Suchen. Dann Mit ok bestätigen. - In den Klassen, wo die Verweise dann genutzt werden die "using" Direktive ganz oben benutzen z.B. "using Microsoft.Practices.Data Zur App.Config: -Projekt "Element Hinzufügen" und dann "anwendungs Konfigurations Datei auswählen. - Diese Entweder einfach öffnen um XML Ansicht zu haben oder rechts Click und "Edit with Enterprise Library" sagen Ich muss jetzt leider zur Arbeit fahren ... Ich hab noch ne Bilder Serie dazu .... Ich werde wenn ich wieder komme mal ein kleines Tutorial dazu schreiben mit Bildern und so
  5. Jo mit "Got Focus" würde ich das auf jeden Fall machen. Und mit "Lost Fokus" dann sowas wie: if (txt_user.Text = "") { txt_user.Text = "[username]" ;} falls der Benutzer sich nur durch tabt.
  6. Auch wenn ich mich langsam bei regelmäßigen Lesern des .NET Berieches wegen "Reposts" enbeliebt mache, empfehle ich Dir dringend die Enterprise Library runter zu laden .... das ist ne .Net Erweiterung Die sehr viele Funktionen bietet .... unter anderm einen Data Access Bereich der sich um Simplifizierzung von speziffischen Datenbanken kümmert. Für Dich als Entwickler heisst das: - Enterprise Library Assemblys im Projekt registrieren, die Du brauchst - den Code schreiben .... dieser ist sehr mächtig und trotzdem intuitiv zugänglich - falls noch nicht vorhanden eine App.Config (Projektmappenverzeichnis ... Projekt XY rechtsclicken ... Hinzufügen ... Anwendungs-Konfigurationsdatei) erstellen. - mittels dem, durch die Installtion der Enterprise Library hinzugefügten, VS Add-In der App.config alle in deinem Projekt verwendente Verbindungszeichenfolgen hinzufügen.... und im Code dann mittels // DatabaseFactory ist statisch und mit der Ent. Lib gekommen // der Parameter für Create Database ist vom Tyo String und muss nur den Namen // beinhalten unter dem die Verbindungszeichenfolge in der App.config registriert ist Database db = DatabaseFactory.CreateDatabase("MeinDBConStringNameInDerAppConfig"); eine Datenbank Verbding aufbauen..... ob da jetzt jetzt ein Access-, SQL-, Oracle- oder sont ein Verbindungsfolgen-String für eine ereichbare Datenbank steht interessiert die statische Methode von "DatabaseFactory" gar nicht ... Factory-Pattern halt. Die Handhabung ist immer die gleiche. Der Download und die Verwendung (auch zu komerziellen Zwecken) der Ent. Lib ist UMSONST. Alle benutzten *.dlls müssen unter "Verweise" in dem entsprechenden Projekt angeben werden und werden AUTOMATISCH mit ins Ausgabe Verzeichnis des Projektes kopiert .... somit muss die Bililothek nur auf dem / den Entwicklungs-Rechner/n istalliert werden ... der Benutzer der Anwendung kriegt davon gar nix mit. Viele Firmen modifizieren die Ent. Lib. mitterweile sogar und rollen diese als Standart Bib. für deren Projekte bei den Kunden aus. Das geht weil der Quell Text von der Ent. Lib im download Paket von *** vorhanden ist und weil Du für Deinen Code eine bestimmte Version der *.dll Laden kannst .... Wenn das unternehmen "Trottel Meyer und Horst AG." also den absoluten Bullschit programmiert und Ihre Modifizierte Version der Ent. Lib auf deinem Kunden Rechnern ausrollte, interessiert das Deine Anwendung gat nicht. Einfacher Datenbank Verbindungen herstellen geht echt nix. Noch die Links ... diesmal am Schluss der Post: Enterpriese Library (Ent. Lib) (Beschreibung) Enterpriese Library (Ent. Lib) (download) DataAcces Application Block (Ent Lib 2.0 basiertes Beispiel zum Lesen aus DB .... das geht mittels dem IReader Interface aus dem normalen .Net Framework einfacher ... er will aber zeigen wie man sogar StoredProcedures aus der DB nutzt ... SQL beispiel bis auf Verb.-Zeichenfolge aber das gleiche für Oracle oder so)
  7. Zu meinem Setup: 3 Partitionen : a) Win7 Win XP c) Daten Nach dem Kauf des PCs hatte ich diese 3 Partitionen erstellt. Ich habe zu erst Win XP installiert und ein paar Wochen später Win 7. Mit der Installation von Win 7 wurde die auf der Win XP Partition leigenden ntldr natürlich übschrieben um den Windows 7 Bootloader zu benutzen... das klappte auch alles wunderbar... Jetzt will ich die Win XP Partition platt machen und mit der Datenpartition Mergen. Leider geht das nicht da der Bootloader noch auf der Win XP Partition liegt (Fehler beim Formatieren). Meine Frage Lautet daher wie kann ich die ntldr und evtl vorhandene andere Bootlaoder Dateien von der Win XP partition auf die Win 7 Partition verschieben.
  8. Also ohne Code wird es schwer da etwas zu sagen.... So kann ich Dir nur sagen, dass das Paint Event deines Panels auch gefeurt wird wenn Du was anderes über dieses Panel schiebst. Evtl erzeugst Du immer wieder ein neues Rechteck bei jedem Aufruf des Handlers. Du könntest Versuchen das Recheteck nur beim ersten Eintreten des Paint events zu zeichen (nur um zu Gucken was dann passiert). Oder das Rechteck incl des Brushs im ResourceDict. deines Panels zu deffieren und dann an gegebener stelle es mit in den VisualTree des Panels zu nehmen oder dort wieder entfernen ... gib sicher noch 10000 anderee Möglichkeiten das mit dem Rechteck zu machen was Du vorhast. Was auch immer das ist.
  9. Stimmt aber kann die obere und linke kantedes recht ecks als coordinatensystem nehmen und das komplette vier eck dann drehen ... so gehts zu min in .Net .... andere Programmiersprachen kenn ich mich nicht so gut aus .... wenn er in WPF bzw Silverlight Programmiert geht das ganze noch viel viel viel trivialer sollte auch mehr ne triviale Lösung sein..... da müssen natürlich rand bedingungen deffiniert werden
  10. Wenn Du die Gerade in Einem Rechteck malen willst kannste auch so vorgehen: Vorbereitung: 1. Start Punkt unten links deffinieren 2. Endpunkt oben rechts deffinieren 3.Gerade einmalig malen Algo zur Punkt-Transformation in Sem- PsydoCode (Koordinaten Uhrsprung Windows typisch OBEN links): ****** start wandert "an der Oberkannte" von rechts nach links ****** ende wandert "an der unterkante" von links nach rechts if (start.Y = 0) { start.X := start.X - 1; ende.X := ende.X + 1; } ****** start wandert "rechts-aussen" von unten nach oben! ****** ende wandert "links aussen" von oben nach unten! else if (start.Y > 0) { start.Y := start.Y - 1; ende.Y := ende.Y + 1; } ****** Punkte vertauschen else if (start.X = 0) { tempPunkt := start; start := ende; ende = tempPunkt; } MaleGerade(start,ende) Der Trick ist: Start und Ende starten in gegenüberliegenden Ecken Start und Ende wandern immer simultan in entgegen gesetzter Rirchtung auf einer der Aussenkanten des Rechtecks. Start und Ende werden immer vertauscht Wenn Uhrsprung erreicht ist . Grapisch Dargestellt (start entspricht x und ende wird durch Y dargestellt) xxxxxxxxxxxxxxxxxxxxxxxxxxxxx Y X Y X Y X Y X YYYYYYYYYYYYYYYYYYYYYYY
  11. Der Fehlermeldung entnehme ich, dass "blabla" vom Typ SqldataSource ist. Wenn Du Dir die Klassendokumentation (verbirgt sich hinter dem link^^) anguckst findest Du unter "Member" eine Auflistung aller Methoden und Properties. Du willst mit blabla.Parameters das Propertie "Parameters" ansprechen, dieses existiert laut Klassendokumentation gar nicht für die Klasse "SqldataSource". Genau das belegt auch die Fehlermeldung. Benutzt Du eine Entwicklungsumgebung (z.B. Visual Studio)?!?! Wenn ja müsste diese, nachdem Du "blabla." geschrieben hast, Dir eine Auflistung aller möglichen Properties und Methoden, die für "blabla" gültig sind, anzeigen. Du kannst an der Stelle nicht nach dem "." einfach irgendwas hinschreiben was dir gerade passt. Sondern nur eins von den angebotenen Sachen auswählen. Ich pers. habe mit der Klasse noch nicht gearbeitet und habe auch keine ASP.NET testumgebung zu hause. Ich glaube aber dass Dir die drei Properties: InsertCommand und InsertParameters und InsertCommandType weiterhelfen wenn Du ein Insert durchführen willst bzw: SelectCommand und SelectParameters und SelectCommandType für den Fall dass Du was Selectiren willst. Für Updates gibts analog dazu auch Properties (findest Du in der Klassendokumentation) Du findest unter den Links zu den Properties auch anschauliche Beispiele (leider in der XML Schreibweise). Grob gesagt geht man so vor: 1a Ein "InsertCommand" erstellen und dem Propertie zuweisen. (1b Ein InserCommandType festlegen) 2. Die "InserParameters" festlegen 3. Ausführen. Wenn dass noch nicht reicht: Tutorial
  12. Mcolli

    [C#] Console und Farbe

    (WICHTIG) Habe einen kleinen Fehler im Code oben den Du rauskopieren sollst ... der bewirkt dass die Farbe wenn Die Einmal weis geworden ist weiss bleibt: Du musst statt: COLOR_FONT += COLOR_FONT + 1 >= Enum.GetValues(typeof(ConsoleColor)).Length ? 0 : 1; das schreiben: COLOR_FONT = COLOR_FONT + 1 >= Enum.GetValues(typeof(ConsoleColor)).Length ? 0 : COLOR_FONT + 1; Analog gilt das gleiche für die Hintergrund farbe (5 Zeilen tiefer)
  13. Mcolli

    [C#] Console und Farbe

    Ja das mit dem Return und der ganze erste Absatz war auch nur geplänkel .... Zum durchlesen und vergessen.... hat nix mit Deinem Programm zu tun. Du musst nur den Code den Du gepostet hast komplett mit meinem ersetzten... Zur Erklärung (Es folgt nur ein BEISPIEL das ist kein relevanter Code): Bei jeglichem Programmstart wird immer genau einmal die Main-Methode aufgerufne ... also Die Methode die Du gepostet hast, die ich mit neuem Inhalt versehen habe(siehe meine Post von gerade). Das ist bei allen Programmen die man mit C# entwickelt so. Wenn Jetzt die Main-Methode so aussehen würde: static void Main(string[] args) { [INDENT] String auswahl = Console.ReadLine(); if (auswahlt == "bla") { .....} else if (auswahl == "blu") { ....... } // weiterer Blödsin soll nur Beispiel sein int a = 21; [/INDENT] [B][COLOR="Red"]}[/COLOR][/B] - Dann Liest der einmal eine Eingabe ein ("String auswahl = Console.ReadLine();"). - Vergleicht Die Eingabe ("if .... else if...") - macht andern Blödsin danach evtl noch ("int a = 21") - und kommt dann an der fetten roten Klammer an und dann wars das auch -> das Programm ist beendet. Solang der nie zu der Klammer kommt läuft das Porgramm noch. Jetzt musste den "Programmfluss" also nachdem "int a = 21"(ist nur ein Beispiel) wieder nachoben zu ("String auswahl = Console.ReadLine();") buchsieren. Das würde mit ner Sprunganweisung gehen (goto XY). Das ist aber DENKBAR SCHLECHT!!!111ELF11 Das geht nur noch weil das bei (geschätzten) 100²²² Programmiersprachen vor C# gegangen ist. Sowas sollman niemals NIEMALS NIEMALS machen. Deshalb wählt man den Weg ne Endlosschleife einzubaen, dessen "Start" unmittelbar vor der Stelle ist an die das Programm, nach einmaligen Abarbeiten von dem was gewollt ist (Farbe ändern in dem Fall), zurückkehren soll und dessen "Ende" unmittelbar nach der letzten wichtigen Naweisung ist. --> Start vor "String auswahl = Console.ReadLine();" --> Ende nach "int a = 21" also : static void Main(string[] args) { [INDENT] while (true) { [INDENT] String auswahl = Console.ReadLine(); if (auswahlt == "bla") { .....} else if (auswahl == "blu") { ....... } // weiterer Blödsin soll nur Beispiel sein int a = 21; } [/INDENT] [/INDENT] [COLOR="Red"]}[/COLOR] bzw. static void Main(string[] args) { [INDENT] Do { [INDENT] String auswahl = Console.ReadLine(); if (auswahlt == "bla") { .....} else if (auswahl == "blu") { ....... } // weiterer Blödsin soll nur Beispiel sein int a = 21; [/INDENT] } while (true) [/INDENT] [COLOR="Red"]}[/COLOR] Und schon läuft das Programm bis du es aus dem ******* Taskmanager gewaltsam entfernst. Bei meiner Post oben habe ich statt "while("true"), while(LAST_INPUT.ToUpper() != "Q") gewählt, da man so durch simples Drücken der Taste "q", wenn man aufgefordet ist eine Aktion zu wählen, die While Schleiche und somit auch das Programm verkassen kann. Das wird dadruch gewährleistet, dass der Input des User in der Variablen "LAST_INPUT" abgelegt wird. Wenn weder 1 noch 2 noch 3 gedrückt wurden passiert bis Zum "Ende" der While-Schleife nix und der kehrt zum "Start" dieser Schleife zurück dort würd überprüft ob die Bedingung noch zutrifft (also ob die Variable LAST_INPUT nicht mit einem "Q" belegt ist). Wenn die Bedingung zutrifft (in LAST_INPUT stekt KEIN "q") dann wird die Schleife weiter durchlaufen. Wenn man das wie in dem Beispiel oben gemacht hätte könnte die Bedingung niemal falsch werden ( denn da steht ja "while(true)") und er läuft und läuft und läuft.
  14. Mcolli

    [C#] Console und Farbe

    Ich kann mich den Vorredner nur anschließen: Jumpanweisungen haben in modernen Programmiesprachen nix zu suchen. Ausnahme bildet die "return" Anweisung. Aber auch diese sollte pro Methode auch nur einmal geschrieben werden (Sollte). Die Jumpprediktion-Unit kann heutzutage sehr gut auf ne Alternativ-Abfrage reagieren die den Zeiger im optimal Fall zum Ende einer Methode und damit zur Return-Anweisung führt. ansonsten muss immer die komplette Pipeline in der CPU gefluscht werden .... wie dem auch sei ich hab Dir mal Die Main Methode geschrieben. Da haste jetzt einen Color-Cykle, also keine Auswahl!!!, drin, musst nicht mehr Enter drücken zum bestätigen, zudem kannste das Programm mit "q" oder "Q" direkt beenden. Ist nicht genau das was Du vorher hattest aber das Umschreieben geht schnell und so kannste mal sehen wie man "dynamisch" mit Enums(Sprachkonstrukt) und der Klasse Enum umgeht. Die Lösung mit der (Endlos)Schleife ist natürlich das Mittel der Wahl. Ähnlich wie bei Windows.Forms Anwendungen, bei denen durch "Application.Run(Control)", ein Infinity-Loop gestartet wird. /// <summary> /// Speichert die letzte Eingabe. /// </summary> public static String LAST_INPUT = ""; /// <summary> /// Stellt den numerischen Wert der aktuellen Hintergrundfarbe der Konsole dar. /// </summary> public static int COLOR_BACKGROUND = 0; /// <summary> /// Stellt den numerischen Wert der aktuellen Schriftfarbe der Konsole dar. /// </summary> public static int COLOR_FONT = 0; // Haupteinstiegspunkt static void Main(string[] args) { // Programmende wird durch die Eingabe von "q" oder "Q" ermöglicht. while (LAST_INPUT.ToUpper() != "Q") { Console.Clear(); Console.WriteLine("Drücken Sie 1 um die Schriftfarbe durch zu schalten."); Console.WriteLine("Drücken Sie 2 um die Hintergrundfarbe durch zu schalten."); Console.WriteLine("Drücken Sie 3 um das Programm zu starten."); Console.WriteLine(); Console.WriteLine("Zum Beenden bitte q eingeben."); Console.WriteLine("----------------------------------------------------------"); LAST_INPUT = Console.ReadKey().KeyChar.ToString(); if (LAST_INPUT == "1") { // Die Anweisugn ist praktisch nen IF-Statement ... bedingter Ausdruck heisst das // Ziel ist den Farbwert immer um 1 zu erhöhen. Wäre der Farbwert nach einer Erhöhung // größer als die Anzahl an Farben wird er auf "0" gesetzt und beginnt wieder von vorn // Syntax: "Bedingung" ? "Ausdruck 1" : "Ausdruck 2" // Ausdruck 1 und 2 müssen den Selben Rückgabe Typ haben. Dieser Entspricht auch dem // gesammt Rückgabetyp des bedingten Ausdrucks .... in dem Fall also int. COLOR_FONT += COLOR_FONT + 1 >= Enum.GetValues(typeof(ConsoleColor)).Length ? 0 : 1; Console.ForegroundColor = (ConsoleColor)Enum.ToObject(typeof(ConsoleColor), COLOR_FONT); } else if (LAST_INPUT == "2") { COLOR_BACKGROUND += COLOR_BACKGROUND + 1 >= Enum.GetValues(typeof(ConsoleColor)).Length ? 0 : 1; Console.BackgroundColor = (ConsoleColor)Enum.ToObject(typeof(ConsoleColor), COLOR_BACKGROUND); } else if (LAST_INPUT == "3") { // Programm starten } } }
  15. Das Problem ist das die Form erst neu gezeichnet wird wenn der Code der Methode ausgeführt wurde, also mit verlassen Deiner Methode. Wenn Du das im Debug Modus testet, also mit Haltemarke, wird beim wechsel zum Code das Fenster minimiert ... das merkste daran dass Du auch nicht zum Fenster zurückkehren kannst während der Cursor auf der Haltemarke oder im Code steht. Du hast 2 Möglichkeiten: 1. Statt this.Hide() und anschließend this.Show() das hier schreiben: this.Opacity = 0; und anschliessend this.Opacity = 1; 2. Das erzeugen des Screenshots wird in einen andern Thread ausgelagert. Somit ist der "Gui"-Thread nicht belegt und das Fenster wird neu gerendert. Allerdings muss Du dann per Event, nach dem Erstellen des Screenshots, das Fenster wieder anzeigen lassen, da der Gui Thread ja wieder im "Warte Modus ist" und Du das Fenster nicht aus dem ScreenShot-Thread angesprochen werden kann (IllegalCorssThreadOperation). Zudem muss Deine Zeitsteuerung so gut sein, dass dem ScreenShotThread vom Shedular erst nach der Event-Abarbeitung des Gui-Thread Rechenzeit zugewisen wird. Also sehr viel Aufwand für einen kleinen *******. Man kann das Neumalen des Fensters NICHT durch: this.Refresh(); this.Invalidate(); Application.DoEvents(); o.ä. erzwingen. Dies ist auch der Grund warum ich bei der Verwendung einen Progressbalken, die Erhöhung des Fortschritts per event auslöse und die "lange Arbeit" im Hintergrund ausführen lasssen. Wenn man die "lange Arbeit" im Gui Thread verrichten lässt, hat man - abgesehen davon, dass die Oberfläche nicht reagiert - das Problem dass der Progressbalken erst nach Beendigung der "langen Arbeit" neu gemahlt wird.
  16. Der Klassiker und trotzdem kann ich mich jedes mal wegschmeissen: How Projects really work
  17. Mcolli

    .NET CF Recoding

    aha Aufnahmen von nem Handy auf nen Server laden .... Das hört sich für mich stark danach an im Auftrag der iranischen Geheimpolizei offiziell für die CIA zuarbeiten, um ein Singstar-Spiel für den Presidenten der Vereinigten Staaten zu programmieren, um dann die Telefonate mittels dem, als Spiel, getarnten Codes auf nen nordkoranischen Server zu laden. :cool:
  18. Mcolli

    .NET CF Recoding

    Das Convertieren macht ja der Code der DLL datei die oben gepostet ist .... aber wenns nicht so geht dann fällt MIR Handy-Muffel nur ein: für 6€ bei Saturn ne 2gb Speicherkarte zu kaufen
  19. Hauptsache es klappt Habe überlesen dass der Post sich auf ASP.net bezieht aber sciher hast Du auch in ASP.net Dlls: Wenn Du VisualStudio hast siehst du im Projektmappen-Explorer den Punkt "Verweise" oder engl "References". Dort sind alle DLLs referenziert die Du benutzt. Ohne Dlls geht gar nix in .Net. Da kann man dann halt auch noch mehr Verweise hinzufügen. So auch die Enterprise Library wenn Sie runtergeladen und installiert wurde. ---->Hier<---- steht auch noch mal wie Sowas geht für ASP
  20. Eckige Klammern statt Runde nehmen: System.Configuration.ConfigurationManager.ConnectionStrings["bla"] wie bei einem Array. Wie allen andern Rate ich Dir aber auch den Data Access Application Block der MS Enterprise Library zu nutzen. Die Enterprise Library ist offiziell von Microsoft und auch wie das .Net Framework vollkommen umsonst. Die enterpise Library muss nur auf dem Entwickler-Rechner installiert sein alle in deinem Projekt referenziert Enterprise Library Dlls werden in den Ausgabe Ordner beim Build gepackt. Mit der Enterprise Library haste viele Möglichkeiten in verschiedenen Berreichen - für Datenban beitet das vorallem den Vorteil auf hoher Abstraktionsebene zu operieren: [URL="http://msdn.microsoft.com/en-us/library/microsoft.practices.enterpriselibrary.data.database%28PandP.31%29.aspx"]Database[/URL] db = [URL="http://msdn.microsoft.com/en-us/library/microsoft.practices.enterpriselibrary.data.databasefactory%28v=PandP.31%29.aspx"]DatabaseFactory[/URL].Create("MeinConStringAusderAppConfig"); using (IDataReader reader = db.ExecuteReader(CommandType.Text, "Select bla..")) { [INDENT]while (reader.Read()) { }[/INDENT] } Die Methode GetStoredProcCommand von Database ermöglicht dir auch auf in der DB Abgelegte Stored Procedures zu zugreifen. Transactionen incl Rollbacks sind möglich und und und. Einzige bei Oracle 9i versagte das Auto Connection Pooling so dass man dem ConnectionString in der app.config "Pooling=false" hinzu fügen musste.
  21. Mcolli

    .NET CF Recoding

    Ich muss sagen noch nie Windows Mobile c# gearbeitet zu haben. Daher weiss ich nicht in weit dor Restriktionen zwecks Benutzung von nicht .Net Dlls vorhanden sind. Bei einer "normalen" .Net Programmierung würde ich auf eine Dll von andern zurückgreifen. Auf Code-Project gibts zum Beispiel ne Bibi die das erledingen kann. Hab Sie selber nicht ausprobiert ist aber das 1. beste was ich gerade gefunden habe und bei der Seite kann man sich über die Arbeiten und erklärungen der Leute eigentlich nie beschweren.... steht alles beim Link dabei wie Du mit dem Teil umgehst .. scheint einfach zu sein. Dann kannste die Wave nach abschluss der Aufname Convertieren und Löschen.
  22. Die länge eines string errechnet sich immer aus: 1 + "Die Länge des Strings, der rechts vom ersten Zeichen ist" also: Lienar-rekursiv static int GET_LAENGE(string wort) { // Die "Abbruch bedingung der Rekursion if (s == "") { [INDENT] return 0;[/INDENT] } else { [INDENT]return 1 + GET_LAENGE(s.Substring(1));[/INDENT] } } Endrekursiv: static int GET_LAENGE(string wort, int laenge) { // Die "Abbruch bedingung der Rekursion if (s == "") { [INDENT]return laenge;[/INDENT] } else { [INDENT]return GET_LAENGE(s.Substring(1), laenge + 1);[/INDENT] } } Die Abbruchbedingung ergibt sich immer dadurch wenn man Versucht das Problem trivial zu betrachten. In dem Fall heisst trivial wenn der String leer ist also "". Beachte dabei das wenn das wort aus einem Buchstaben besteht der Methodenaufruf "s.Substring(1)" einen leeren String zurück gibt und eben KEINE Exception wirft. Wenn das zu ner Exception geführt hätte, würde mann hat s.Substring(0) == s[0].ToString() als Abbruchbedingung nehmen und 1 zurück geben, d.h. den Fall dass der String nur aus seinem Anfangsbuchstaben besteht als trivial betrachten. Bei der Lienarrekursion muss der Rechner nach dem die Abbruchbedingungen "erreicht" worden ist noch die einzelenen Rückgaben der Calls aufaddieren. Somit bleiben Sämtliche Methoden Call im stack und im Arbeitsspeicher muss für jeden Call im Callstack Speicher für zu min. die Paramater reserviert sein. Bei der Endrekursiven Lösung ist das nicht der Fall, das in dem Parameter "Laenge" die Addition erfolgt. Das Problem bei, ich glaub allen objektorientierten Sprachen ist, dass nicht zwichen lienear und Endrekursion unterschieden wird, und somit auch Endrekursiv arbeitende Methoden im Callstack verweilen.
  23. Wollte allen die gerne an Algorithmen basteln mal folgende Seite empfehlen. Project Euler. Dort wenn algorithmisch lösbare Probleme gestellt zu denen es schon ausreichend Antworten gibt. Es geht darum selber auf die Lösung zu kommen. Es reichen sehr geringe Programmierkenntnise .... wer die Main-Methode findet und weiss was "if ...then..." und "while(...)Do{..}" beudetet wird keine Probleme was das Handwerkszeug angeht haben. Gibt auch noch ne andere Seite für Profis wo schwerere Knobelaufgaben sind.... die weiss ich aber leider nicht mehr ;(
  24. Wieso selber arbeiten wenn andere das für tun ... und man noch nicht mal bezahlt wird ;( Habe bei unsern Freunden von "www.codeproject.com" einen guten SamplCode gefunden. Je mehr Properties eine Klasse hat die man so Serialisieren will desto mehr "arbeit" hat man natürlich beim erstellen des Surrogates.
  25. Das ist ne gute Idee leider fehlen dann die Eigenschaften. Es gibt aber ne Möglichkeit NICHT als Serializable gemarkte klassen trotzdem zu Speichern .... auch Controls: Man köntne eine Schnittstelle schreiben, die zwei Methoden beinhaltet. Eine Methode liest mittels eines übergebenen Objektes und Reflektion die Properties der Klasse aus und speichert diese dann in einer Serializationinfo und gibt diese dann zurück. Mit der Serializationinfo und einemBinarryFormatter kann man das Objekt dann serialisieren. Die andere Methode nutzt die SerialisationInfo und erzeugt ein Objekt des angegebenen Typs und versucht zu die in den SerialisationInfo angebenen Properties zu finden (mittels Reflection) und entsprechend zu belegen(mittels Reflection). Weit aus besser funktioniert alles, was in den zwei Absätzen hierdrüber^^, steht zu vergessen und die SCHON EXISTIERENDE SCHNITTSTELLE ISerializationSurrogate zu nutzen.:uli Die Schnittstelel erzeugt nämlich so eine SerializationInfo und erinnert zudem noch an einen guten Bruce Willis film... was will man mehr?!?! Ah ja ein Sample Code ..... ich schreib bei gelegenheit mal einen .... muss mich aber selber durchlesen wie das mit der SChnittstelle genau klappt .... ich weiss nur dass es klappt.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...