Laden...

Forenbeiträge von cmpxchg Ingesamt 192 Beiträge

19.09.2005 - 15:20 Uhr

Naja, die Resource wird ja mit dem ResourceManager verwaltet.


ResourceManager manager; manager = ...     //Hier kommt der ResourceManager hin, den die MenuStripes verwenden

ImageList list = new ImageList(); // Hier kannst du statt new auch eine bestehende imageList verwenden

list.Images.Add((Image) manager.getObject("bild1"));

Also um es kurz zu sagen: mit der Methode ResourceManager.getObject();
Du brauchst aber den Resource-Namen des Icons, den musst du erst rausfinden. Probiere einfach rum, du kannst aber dafür auch Lutz Roeder's Resourcer verwenden. Google einfach danach, das Programm finde ich sehr Praktisch

Kommst du an die Instanz des ResourceManagers der MenuStripes nicht ran, musst du den ResourceManager mit new erzeugen. Dem Konstruktor gibst du am besten this.getType() als Parameter (siehe MSDN), die Variante mit dem BaseName finde ich recht eine ziemliche rumbastelei

16.09.2005 - 09:44 Uhr

Hi,

ich versuche eine Resource-Datei zu laden, doch ich bekomme da immer eine MissingManifestResourceException und meine Frage ist jetzt was ist ta tun soll?

Ich habe eine Resource-Datei für .Net 1.1 mit dem Resourcer erstellt. Name ist c:\work\vis\sources\plugin sources\TreeListIcons.resources

Darin befinden sich 2 Bilder, das erste mit den Namen mitarbeiter und das zweite mit dem Namen Ordner

Ich habe diese Resource-Datei zu meinem Projekt hinzugefügt.


namespace Vis.Plugins.UserAdminstration
{
class UserAdministration
{
  public void loadimages()
  {
     string basename = "Vis.Plugins.UserAdministration.TreeListIcons";
     ResourceManager manager = new ResourceManager(basename, this.getType().Addsembly);

     ImageList imagelist = new ImageList();
     imageList.images.add( (Image) manager.getObject("Ordner"));    <== Exception
   }
}
}

  1. Was kann ich gegen diese Exception machen?
  2. Gibt es auch eine leichtere Möglichkeit, Bilder in eine ImageList zu laden?
  3. Nicht so wichtig aber wie kann ich Bilder direct von .jpg in eine ImageList laden?
16.09.2005 - 08:50 Uhr

Also ich fürchte, dass die Portierung nicht ganz so leicht wird. c# hat nunmal doch eine andere Syntax wie c++. Ich hab auch als erstes c++ gelernt und dachte dann, dass c# einfach so hoppalahopp ginge. Zu 80% war auch alles bekannt aber dann....
In c# gibt es keine Zeiger (ja es gibt sie schon aber....), die ganze Klassendeklaration ist klein wenig anders. und und und lauter kleine Details

Ihr habt euch ja schon entschieden, das c++ auf c# zu portieren also würde ich an eurer Stelle von vorne beginnen. Vielleicht könnt ihr ja auf die Erfahrungen der alten c++ COM-objekts ein besseres Programm schreiben?

Dann wegen dem Zugriff auf die Serielle Schnittstelle:
Ich habs leider nur einmal kurz gemacht, aber soweit ich mich erinnern kann war es total leicht. Einfach eine Klasse instanziieren, dann kann man da über properties die Stoppbits, die Parität, die Präambel u.s.w. festlegen und dann gibt es so puffer über die man die Zeichen empfangen oder senden kann. Alles über Properties einer Klasse

16.09.2005 - 08:30 Uhr

Warum brauchst du das denn? Wenn du c++ unter .NET programmierst kannst du doch das programm problemlos mit anderen c#-programmen zusammenlinken. Dafür macht doch Microsoft soviel werbung also wird das schon funktionieren.

Was willst du denn genau machen?

15.09.2005 - 13:26 Uhr

Original von Noodles

Original von cmpxchg
Noodles beispiel funktioniert wirklich, es verwendet halt einen .NET-sortieralgorithmus.

Um genau zu sein.

This method uses Array.Sort, which uses the QuickSort algorithm.

Original von cmpxchg
Ich hab halt kein .NET 2.0 und daher kann ich dir fürn ummünzen nicht helfen.

Dafür braucht man doch auch kein 2.0.

gut

15.09.2005 - 13:03 Uhr

hi,

ich schreibe dir mal den Algorithmus hin. Noodles beispiel funktioniert wirklich, es verwendet halt einen .NET-sortieralgorithmus. Also ich schreibe mal den Algorithmus den ich vorher meinte in x#


// Einlesen der Datei
ArrayList DatenSätze = new ArrayList();
ArrayList DebNummern = new ArrayList();

while(sr.Peek()!=-1) // Diese MSDN, so ähnlich findet man das ende der datei
{
string input = sr.ReadLine();
int DebNr = int.Parse(input.Split('|')[0]);

DatenSätze.Add(input);
DebNummer.Add(DebNr);
}

// Sortieren
for(int i = 0; i < DebNummern.Count -1; ++i)
{
for(int j = i; j < DebNummern.Count -1; ++j)
{
  if(  ( (int) DebNummern[i] ) > ( (int) DebNummern[j] ) )
  {
    // Vertauschen
    int tmp = (int) DebNummern[i];
    DebNummern[i] = DebNummern[j];
    DebNummern[j] = tmp;

    object tmpo = Datensätze[i];
    DatenSätze[i] = DatenSätze[j];
    DatenSätze[j] = tmpo
  }
}
}

Naja, ich hab diesen Sourcecode nicht getestet, aber ich hoffe er beantwortet deine Fragen.

Wenn du magst kannst du ihn ja mal programmieren, grundsätzlich fände ich Noodles Variante besser. Ich hab halt kein .NET 2.0 und daher kann ich dir fürn ummünzen nicht helfen.

15.09.2005 - 09:37 Uhr

mal angenommen du hast einen

string zeile = "001|xxx|xxx|xxx";

Dann machst du sowas:

string [] elemente = zeile.Split('|');

int DebNr = int.Parse(elemente[0]); // DebNr = 1

Naja, für das Sortieren wird es etwas schwerer, weil du da erst alle Zeilen einlesen musst. Also wird eher sowas daraus

ArrayList DatenSätze = new ArrayList();
ArrayList DebNummern = new ArrayList();

while(sr.Peek()!=-1) // Diese MSDN, so ähnlich findet man das ende der datei
{
string input = sr.ReadLine();
int DebNr = int.Parse(input.Split('|')[0]);

DatenSätze.Add(input);
DebNummer.Add(DebNr);
}

Und jetzt kommt ein Bubblesort, du vergleichst einfach jedes Element aus DebNummern mit jedem anderen und wenn das zweite Element kleiner ist, werden die beiden (und die Datensätze mit den gleichen Indizes!) vertauscht.

15.09.2005 - 09:06 Uhr

Naja, da hast du schon recht, unter .NET sollte man die Menüs erstellen können, die .NET Framework selber verwendet. Der Grund darin ist wohl der, dass Microsoft die Controls alle selber nur einkauft. Wenn du so schönes Zeug haben willst, dann verwende doch WeifenLuo.WinFormsUI, dann hast du so schön andockendes Zeug oder die SandBar, da schauen die Menüs gleich viel geiler aus. Das was du so kritisierst ist eine echte Marktlücke, es gibt lauber Steuerelemente (Controls) die irgendwelche Firmen verkaufen und die verdienen an so schön Designtem Zeug richtig viel Geld. Früher konnte ich auch nicht verstelen, warum mein Arbeitskollege immer von so DataGrids Teuren schwärmt aber es ist halt so.

Wenn du Geld willst, dann entwickle ein schönes, einfach zu handhabendes Control und verdiene pro kommerzielen anwender 1000€, für ein gutes DataGrid kannst du sowas verlangen.

Ich hoffe das ist eine gute Antwort, Microsoft hat halt nunmal das Monopol und wenn sie meinen die .NET Forms sollen alle scheisse aussehen, so müssen wir uns dem beugen

14.09.2005 - 10:03 Uhr

Tja, so ganz verstehe ich leider nicht wie du es meinst, aber ich glaube so wie du es machst, verwendest du manages Resources.

In diesem Fall programmierst du sowas:


string BaseName = "namespc.file";
					ResourceManager resources = new ResourceManager(BaseName,Assembly.GetExecutingAssembly());
					System.Drawing.Image bild =  resources.GetObject(Name);


und dann brauchst du noch den richtigen Basename. Er setzt sich zusammen aus dem Namespace deines Programmes und der Resourcendateiname OHNE endung.

Also z.B. Namespace = MeinProgramm
Dateiname = resourcendatei.resx

=> BaseName = "MeinProgramm.resourcendatei".

Probiers mal aus.
Wenn eine komische Exception kommt, also etwas sehr Cryptisches mit Cultures und namespaces, dann ist der BaseName falsch, den musst du dann überprüfen.

14.09.2005 - 09:23 Uhr

Steht da noch mehr bei der Fehlermeldung?

Wenn es keine bessere idee gibt, würde ich mal Windows neu installieren, das hat schon oft probleme behoben

14.09.2005 - 09:13 Uhr

Hi, ich hab damit auch mal eine ganze Weile rumgebastelt.
Sind es managed resources? (Also ist die resource-datei teil deines Projektes?)

Was kommt für eine Fehlermeldung? Hat diese Fehlermendung etwas mit einer Kultur (culture) zu tun?

13.09.2005 - 14:59 Uhr

Oh, diese Antwort hab ich in den falschen thread geschrieben.

Falls es jemanden interessieren sollte:

Ich erzeuge das DockPanel objekt manuell aus einer dll. Also erst Assembly.Load(), dann mit type.CreateInstance(). (dllpfad= c:\work\WeifenLuo.dll)

Naja, und wenn ich das programm ausführe, kopiert das .NET Framework genau diese dll (nach c:\work\binaries\debug) und verwendet diese! Tja, das heißt ich verwende einmal das objekt instanziiert durch c:\work\WeifenLuo.dll und durch das FrameWork c:\work\binaries\debug\WeifenLuo.dll.

Dann entsteht eine Exception bei dem Typecast, weil ich zweimal die gleiche dll mit unterschiedlichem Pfad verwende

13.09.2005 - 14:34 Uhr

Falls es jemanden interessieren sollte:

Ich erzeuge das DockPanel objekt manuell aus einer dll. Also erst Assembly.Load(), dann mit type.CreateInstance(). (dllpfad= c:\work\WeifenLuo.dll)

Naja, und wenn ich das programm ausführe, kopiert das .NET Framework genau diese dll (nach c:\work\binaries\debug) und verwendet diese! Tja, das heißt ich verwende einmal das objekt instanziiert durch c:\work\WeifenLuo.dll und durch das FrameWork c:\work\binaries\debug\WeifenLuo.dll.

Dann entsteht eine Exception bei dem Typecast, weil ich zweimal die gleiche dll mit unterschiedlichem Pfad verwende

13.09.2005 - 13:55 Uhr

Ne er springt nicht rein. Aber warum funktioniert das nicht? Das Steuerelement wird durch ein Type-objekt mit dem FullName = WeifenLuo.WinFormsUI.DockPanel erzeugt (also irgendwo in den tiefen meines Programmes) und das Steuerelement wird auch angezeigt, ganz gewöhnlich. Der Debugger sagt auch, dass das objekt vom Type WeifenLuo.WinFormsUI.DockPanel ist. Wie kann denn so ein effekt entstehen?

13.09.2005 - 13:44 Uhr

Hallo, ich hab da ein komisches Problem, das mit Reflection zu tun hat


object targetobj = this.Controls[1];
if(targetobj.getType().FullName == "WeifenLuo.WinFormsUI.DockPanel")
{
    WeifenLuo.WinFormsUI.DockPanel panel = (WeifenLuo.WinFormsUI.DockPanel) targetobj;
}

da, und da bekomme ich in der letzten Zeite eine invalid cast exception.
Ein cast zu einen Control geht aber.

Aus welchem grund, kann da eine solche Exception auftreten?

13.09.2005 - 13:37 Uhr

Naja, grundsätzlich funktioniert es so:


StreamReader sr = new StreamReader(@"c:\datei.txt");
string a = sr.Read();
string b = sr.ReadLine();
string c = sr.ReadToEnd();

und die weitere verarbeitung des strings musst du selber machen.
eine neue Zeile machst du mit dem string "\r\n" (unter Linux nur "\n")

Wenn du eine bessere Antwort willst, musst du nur eine bessere Frage stellen

Die Ausgabe funktioniert so ähnlich, nur mit dem StreamWriter

09.09.2005 - 10:11 Uhr

Hallo, mit folgendem Code versuche ich eine Datei umzubenennen, aber da wird bei mir eine Exception generiert. Die Message sagt aus, dass die Datei nicht umbenannt werden kann, da ein Prozeß bereits versucht auf die Datei zuzugreifen. Diese Datei existiert aber nicht! Ich lösche sich doch sogar vorsoglich mit File.Delete()

			
string tmpfilename = xmlfilename + "-tmp";
// Rename the targetfile
if(File.Exists(tmpfilename)) File.Delete(tmpfilename);
File.Move(xmlfilename,tmpfilename);
[\CSHARP]

was kann ich da machen? Warum wird eine solch komische Exception generiert?
09.09.2005 - 08:53 Uhr

Das geht mit substring;


string orginal;
string a = orginal.substring(0,6);  // Die ersten 6 zeichen
string b = orginal.substring(6,orginal.Length); // Die restlichen zeichen

08.09.2005 - 17:09 Uhr

Hallo,
ich habe eine klasse in einer .cs-Datei, die von System.Windows.Forms.Form abgeleitet ist. Ich will aber, dass bei einem doppelklick auf die Datei im Projektmappenexplorer nicht automatisch der Designer gestartet wird. Wie kann ist es machen, dass der designer nicht standartmässig geöffnet wird?

08.09.2005 - 17:05 Uhr

Hallo,
gibt es mit c# unter mit dem .NET Framework 1.1 die möglichkeit die anzahl der Compilerläufe mitzuzählen? Oder sonstig irgendwie eine buildnummer zu erhalten, die sich automatisch erhöht?

08.09.2005 - 16:46 Uhr

Wirklich eine gute Idee habe ich nicht. Der Grund aber ist der, dass ein string immer unicode ist und äöü eben nicht im Ascii-Zeichensatz ist. Beim konvertieren zu byte schaut .NET also einfach in eine Ascii-Tabelle und ersetzt die buchstaben durch den Ascii-Wert. Da äöü nicht in der ascii-tabelle ist, macht er somit ein ? (also den bytewert) daraus. Ich würde einfach selber äöü durch den ascii-wert ersetzen.

äöü sind ja für die domainnames neu, schaue lieber auch mal nach, wie das dns-protokoll die darstellung von äöü wünscht.

08.09.2005 - 16:39 Uhr

Tja, da wird dir wohl nur ein umständlicher Weg übrigbleiben, also jedes Element mit jedem anderen zu vergleichen.

Programmiertechnisch am leichtesten wäre wohl wenn du das Feld erstmal sortieren würdest (mit Quicksort), dann reicht es, wenn du aufeinanderfolgene elemente vergleichst, da gleiche Elemente nebeneinander stehen würden. Das stelle ich mir programmiertechnisch am leichtesten vor.

Performance-Technisch ist wohl der Vergleich jedes Elementes mit jedem anderen am bessten

07.09.2005 - 13:10 Uhr

achso. Dann habe ich das .NET Framework 1.1 und ich will ein AddIn installieren, das dann in Extras->Add-In-Manager... angezeigt wird. Im konkreten fall handelt es sich um den myXaml-Serializer. Ich hab jetzt das programm regasm.exe ausprobiert aber es funktioniert nicht, d.h. das addin wird nicht angezeigt..

07.09.2005 - 11:23 Uhr

VS Version 1.1

07.09.2005 - 11:10 Uhr

Hallo, ich will für Visual Studion ein Addin installieren, das ich nur als .dll-datei habe. Was muss ich mit der dll machen, dass Visual Studio sie findet?

07.09.2005 - 10:15 Uhr

Hallo,


				Type formtype = this.GetType();
				// Holen von BackColor aus der Form
				PropertyInfo backcolorproperty = formtype.GetProperty("BackColor");
			
				// Erzeugen einer Instanz des Datentyps von BackColor
				object backcolorobj = backcolorproperty.PropertyType.Assembly.CreateInstance(
					backcolorproperty.PropertyType.FullName);

				// Holen von R aus BackColor
				PropertyInfo ColorRProperty = backcolorobj.GetType().GetProperty("R");
			
				// Zuweisen von 255 an BackColor.R
				ColorRProperty.SetValue(backcolorobj,255,null);

				// Zuweisen von BackColor an die Form
				backcolorproperty.SetValue(this,backcolorobj,null);

hier erhalte ich die Exception.Message: Die Eigenschaft-set-methode wurde nicht gefunden. Wie kann ich dieses neue BackColor-Objekt der Form zuweisen?

Der Grund für diese komplizierte herangehensweise ist, dass ich diese eigenschaften auf basis einer xml-Datei zuweisen will.
Also z.B.
<Form1>
<BackColor>
<R>255</R>
</BackColor>
</Form>

und dies soll für alle möglichen Steuerelemente mit alle möglichen Properties und alles möglichen Datentypen gehen. Mit einem solchen, obigen Reflectionkonstrukt kann ich sehr viel zuweisen aber bei manchen Eigenschaften gibt es halt die Exception

07.09.2005 - 10:00 Uhr

Hallo, ich habe eine fertige GUI mit dem Designer erstellt und möchte nun
diese GUI als xml-Datei exportieren. Bei jedem Programmstart will ich nun diese xml-Datei laden und auf Basis dieser eine GUI aufbauen.

Wenn ich jetzt diese xml-Datei ändere, soll sich die GUI dynamisch an den neuen gegebenheiten anpassen. Wie kann ich sowas am bessten programmieren (Mit reflection stoße ich da an lauter Grenzen), gibt es dafür bereits Bibliotheken?

07.09.2005 - 08:48 Uhr

Ich habe genau über dieses Thema mal einen Bericht gelesen, dass man entscheiden soll, wie oft der Fall auftritt.

Ist die if-Bedingung für weniger als 10% der vergleiche erfüllt, so ist es sinnvoller ein try-catch aufzubauen. Ansonsten ist das if besser

07.09.2005 - 08:24 Uhr

Naja, ich würde an der Stelle das sax verwenden. Es ist zwar nicht so komfortabel aber DOM ist in diesem Fall wohl unmöglich.


XmlTextReader xmlreader = new XmlTextReader(@"c:\tvprogramm.xml");

/* Dieses paar würde ich immer verwenden um zum nächsten sinnvollen abschnitt zu kommen */
xmlreader.Read();
xmlreader.MoveToContent();

/* Mit Name erkältst du die Elementnames (Bouquet, channel,....) */ 
if(xmlreader.Name == "zapit") 
{
    /* So bekommt man bei zapit das xmlns="http://tempui...." */
    string attr = xmlreader.getAttribute("xmlns");
   /* attr = [URL]http://tempuri...[/URL]." */

}

Dieser Beispielcode dürfte für dich reichen um die xml-datei auszuwerten

Schreiben Machst du dann so


XmlTextWriter xmlwriter;
xmlwriter = new XmlTextWriter(@"c:\neuprogramm.xml",false,Encoding.UTF8);

xmlwriter.WriteStartElement("zapit");
/* Bei der nächsten Zeit bin ich mir nicht zu 100% sicher, müsste aber gehen */
xmlwriter.WriteAttributeString("xmlns","http://tempuri.org/...");
xmlwriter.WriteStartElement("Bouquet");
xmlwriter.WriteEndElement();
xmlwriter.WriteEndElement();


Ausserdem würde ich anstelle von Datagrids lieber ListBoxes verwenden, weil da der user einzelne Zeilen anklicken kann und du dann mit lstBox1.SelectedIndex auf die Indexnummer der Zeile zugreifen kannst. Aber da musst du einiges an ExceptionHandlich miteinprogrammieren, da du einer leehren ListBox z.B. kein SelectedIndex von 0 zuweisen darfst. u.s.w.
Wenn es da weitere probleme gibt, kannst du ja einfach nochmal posten

05.09.2005 - 15:00 Uhr

Hallo, ich hab heute schonmal eine ähnliche Frage gestellt.
Ich versuche von einer Form eine Liste aller Eigenschaften herauszubekommen, und zwar die, die im Windows Forms Designer angezeigt werden.
Bis jetzt versuchte ich immer getProperties() zu benutzern. Das sind aber viel zu viele Eigenschaften, das heißt ich muss sie filtern. Klar oder?
Aber wonach muss ich sie filtern?
Ich habe mal sowas probiert:


PropertyInfo pi = this.getType().getProperties();
object [] objts = pi.getCustonAttributes();

foreach(object obj in objts)
{
    if(obj.ToString() == "BrowsableAttribute") this.textBox1.Text += pi.Name + "\r\n";
}

Doch da kommen nicht die richtigen Attribute raus.

Auch so ein Filterkonstrukt funktioniert nicht:


BrowsableAttribute atr = (BrowsableAttribute) obj;
if(atr.Browsable==true)  doSomething();

05.09.2005 - 14:52 Uhr

Hm, und wie implementieren sie diesen Algorithmus? Die müssen doch dafür auch bigint oder sowas ähnliches verwenden um genug große Datentypen zu verwenden

05.09.2005 - 13:55 Uhr

Ich geb dem Steffen recht, verwende lieber vordefinierte Bibliotheken, da sparst du die viel Zeit und viel Fehlersuche.

Windows verwendet doch Unicode, also dürftest du pro Stringzeichen 2 Byte Speicher verbrauchen. Für eine dezimalzahl brauchst du aber nur 4 bit (also die stringvariante ist sehr verschwenderisch).

Aber ich glaube, deine Zahlen werden eh nicht länger als 1000 Stellen werden, da kannst du ruhig die Stringvariante nehmen

Du programmierst doch Wellen, deren Amplituden sind doch nicht so groß. Gibts da nicht speichersparendere und vorallem auch schnellere Algorithmen als die Besselfunktion? Wenn ich mir das richtig vorstelle, berechnest du doch mit der funktion für ein gegebenes x und y ein z. Wenn der Wert von z zu gross ist, wirst du es wohl nie auf den bildschirm zeichnen können. Die OpenGL-Routinen nehmen alle auch nur ein double und der datentype wäre dann auch viel zu klein

05.09.2005 - 13:49 Uhr

Wie meinst du das genau?
Wenn keine Verbindung zu dem ZielRechner besteht musst du die IP-Adresse manuell eingeben oder einen DNS-Server abfragen. Der quellrechner weis doch in diesem Moment selber die IP des Zielrechners garnicht.

Oder meinst du, dein Quellrechner hat eine statische IP aber im Moment kein Netzwerkkabel eingesteckt? Und du bist nicht mitm Hub/Switch verbunden?

Tja dann sag ich nur Windows bleibt Windows. Dein Rechner hat in diesem Moment keine IP.

05.09.2005 - 13:46 Uhr

Tja, irgendwie finde ich aber nicht das richtige Attribut. Diesen Code habe ich bis jetzt, doch wo muss ich was programmieren um nur die Properties zu erhalten, die im WindowsFormsDesigner angezeigt werden?

			PropertyInfo [] fi = this.GetType().GetProperties();
			int counter = 0;
			int maxcounter = 100000;

			foreach(PropertyInfo pi in fi)
			{
				object [] objts = pi.GetCustomAttributes(false);
				
				this.textBox1.Text += pi.Name+"\r\n";

				foreach(object obj in objts)
				{
					this.textBox1.Text += "  "+obj.ToString()+"\r\n";
					
					if(obj.ToString() == "System.ComponentModel.BrowsableAttribute")
					{
						BrowsableAttribute att = (BrowsableAttribute) obj;
						this.textBox1.Text += "    "+pi.Name+" "+"Browseable="+att.Browsable+"\r\n";  

					}

					counter++;					
					if(counter >= maxcounter) return;
				}
			}

05.09.2005 - 13:37 Uhr

oh, ich habe eigentlich mit der Programmierung von bigint gerechnet.... Für was ist eigentlich die Besselfunktion? Dies doch eine unendliche Reihe, gibts da nicht bessere Methoden es zu lösen? Taylor Reihen?

05.09.2005 - 11:19 Uhr

Hallo,
ich will von Controls eine Liste der eigenschaften (mit c#) bekommen. Ich verwende bis jetzt immer reflection. Also im Prinzip sowas:

  1. control.getType().getFields();

oder

  1. control.getType().getProperties();

Ich will aber nur die Felder bekommen, die im Eigenschaftsfenster des Windows-Forms-Designer angezeigt werden. getFields() gibt viel zuwenig und getProperties() gibt viel zu viel zurück.

Was kann ich da machen um immer die richtigen zu erhalten?

05.09.2005 - 11:13 Uhr

leider habe ich das in c# noch nicht gemacht, aber für C++ gibt es BigInt.
google doch mal danach, solche Datentypen für sehr große Zahlen sind mittlerweile, gerade für kryptographie, eh sehr wichtig.

Wenn du schon fakultät programmierst, hast du bestimmt lust so ein bigint selber zu programmierenn das machst du indem du ein Array aus integer machst. Das gesamte array ist immer die binärdarstellung deiner Zahl.
Multiplizieren kannst du indem du das Malnehmen wie in der Grundschule nachprogrammierst. Teilen auch. Das ergebnis ist wieder ein Array aus Int.

Um die Zahl auszugeben rechnest du immer modulo 10 und der Rest ist eine Ziffer für den Bildschirm.

Du kannst auch anstatt ein array auf integer einen String verwenden, wo du als zeichen immer eine Zahl von 0-9 speicherst, dies wäre dann leichter zu debuggen.

Viel spass

Wenn du lust hast, können wir in diesem Forum noch weiter diskutieren, ich liebe solche Themen 🙂

01.09.2005 - 15:32 Uhr

Irgendwie kapiere ich das so nicht. Ich hab die WndProc-Methode überschrieben und neugestartet, doch bei mit kam die Message nicht an. Jetzt lese ich gerade von dir, dass ich erst alle Programme vorher beenden soll. Was bedeutet das? Ich hab vorher sogar einfach alles Beendet (also zufällig richtig gemacht), aber was bedeutet denn alles? Vielleicht hab ich ja doch irgendein Try-Icon nicht beendet.

Aber das bedeutet dann doch auch, dass ich immer alle Progamme vorher per Hand beenden muss oder?

Ich hab auch noch die Hilfe durchstöbert und ich bin auf die PreProcess-Methode gestossen. Was hat die damit zu tun? Kann ein überschrieben der Methode mir helfen?

01.09.2005 - 14:51 Uhr

Hallo,
ich schreibe gerade ein Programm, das wärend des Beendens noch schnell Daten auf die Festplatte schreibt. Doch was mache ich wenn der Rechner heruntergefahren wird? Oder wenn im Taskmanager das Programm beendet wird um noch schnell die Daten zu speichern?

Ich hab bis jetzt mit Form.Closing, Form.Closed, Application.ThreadExit, Application.ThreadException und Application.ApplicatonExit rumprobiert. Sie sollen testhalber eine MessageBox ausgeben, aber keine der Eventhandler wird vor dem Beenden aufgerufen.

was kann ich tun um die Daten vor dem Beenden zu retten?

30.08.2005 - 09:41 Uhr

Ok, was mache ich, wenn ich so typische Server-Sachen programmieren will.

Mal angenommen jeder Client erzeugt ein Objekt, das seinen Benutzernamen zur Authentifizierung in einem public string speichert. Der Server soll jetzt alle 10 min einmal alle Benutzernamen in eine Datei speichern. Wie findet den der server die Benutzernamen aller Clients raus?

24.08.2005 - 10:35 Uhr

Hallo ich hab ein problem mit .NET remoting. Jetzt kommt erstmal der Sourcecode den ich hab:


class Server
{
		[STAThread]
		static void Main(string[] args)
		{
			Console.Out.WriteLine("Starting Server");
			Console.Out.WriteLine("Creating Mainclass");
			Server mainclass = new Server();
			Application.Run();
		}

                Server()
		{

			ChannelServices.RegisterChannel(new TcpServerChannel(8123));

		
			RemotingConfiguration.RegisterWellKnownServiceType( typeof(Remoteclass), "remoteclass.rem", WellKnownObjectMode.SingleCall );
		}
}


class Remoteclass : MarshalByRefObject
{
	void DoSomething()
	{
		Console.Out.Write("Hallo");
	}
}

class Clientclass
{
		[STAThread]
		static void Main(string[] args)
		{
			Application.Run(new Clientclass());	
		}

		Clientclass()
		{
			ChannelServices.RegisterChannel(new TcpClientChannel());
			Remoteclass remclass = (Remoteclass)  Activator.GetObject( typeof(Remoteclass), "tcp://localhost:8123/remoteclass.rem");

			Remoteclass.DoSomething();
		}

}

So soweit so gut, funktioniertes es ja. Der Client veranlasst den Server ein Objekt vom Typ Remoteclass zu erzeugen. Der Client führt auch die funktionen aus u.s.w. Ich will aber jetzt Serverseitig auch Methoden dieser Remoteclass-instanz ausführen, was muss man da machen?

13.05.2005 - 11:02 Uhr

Hallo,
ich würde gerne in meinem Programm zur kompilierzeit mir unbekannte dlls laden, so als plugin, der Inhalt ist zur kompilierzeit also auch unbekannt.

Ich hab daher mit AppDomain-Klasse rumprobiert aber ich bekomm da so Exceptions, wie dass der Dateiname nicht gefunden wurde (Der Dateiname ist aber richtig!).
Könnte mir jemand bitte einen Beispielquellcode posten, der eine dll, gegeben als Dateiname in einem String lädt und am besten noch ein Type-Objekt dieser Klasse erzeugt und eine methode (z.B. run()) ausführt?

Ich will aber nur Assemblies verwenden (also die neuen .NET-dlls, keine alten "normalen" dlls)

Danke