Laden...
Avatar #avatar-2328.jpg
Cookiie myCSharp.de - Member
Student früher Leipzig, jetzt Out of Rosenheim Dabei seit 27.06.2007 363 Beiträge
Benutzerbeschreibung

Forenbeiträge von Cookiie Ingesamt 363 Beiträge

06.11.2007 - 11:09 Uhr

Was genau willst du eigentlich machen?

Du hast die Spalte xy und willst in dieser Spalte jede Reihe durchsuchen oder?
Dann mußt du diese Spalte per Index selektieren, also fix machen und dann die Reihen per Schleife durchgehen.

06.11.2007 - 09:50 Uhr

Nimm nicht die foreach-schleife, sonder die for-Schleife und verwende den Index, um die Spalte direkt anzusprechen.

Gruß Cookiie

P.S.:
für Code-zeilen benutze bitte in Zukunft das Code-Tag, das macht es leichter lesbar gerade bei längeren Code-Schnipseln

05.11.2007 - 10:03 Uhr

Naja, rein von der Logik her. Wieviele Nutzer hast du theoretisch bei deinem Programm?
Bei 2,3, 4 Leuten reicht denke ich mal P2P, wobei du da immernoch Vermittlungsserver benötigst. Bei allem was darüber hinaus geht, brauchst du nen zentralen Server, weil die Verzögerungszeiten sonst zu gross werden, weil jeder mit jedem kommuniziert und das skaliert exponentiell mit Anzahl der Nutzer.
Erklär mal genauer was du vor hast.

Gruß Cookiie

31.10.2007 - 10:17 Uhr

Hi,

bei meiner Diplomarbeit arbeite ich im Prinzip an der gleichen Problematik.
Lizenzierung von Software, vorher war diese Arbeitsplatz gebunden und musste bei einem neuen Rechner immer wieder neu gemacht werden, weil andere Hardware usw.
Meine Strategie gegen "böse" Kunden ist das ich alle mitlogge was für mich wichtig erscheint. Will heißen ich speichere die IP und MAC, von der jeweils Aktiviert wurde und wie oft und wann der Schlüssel verwendet wurde in einer DB.
Wann und ob der Schlüssel dann gesperrt wird, entscheidet der Chef, Rechnung nicht gezahlt oder was auch immer, aber ganz sicher nicht die Software. Man muss sich halt immer vor Augen halten, wo hört Sicherheit auf und fängt die Gängelei des Kunden an.
Für die Leute ohne Internet, gibts von mir nen zeitlich limitierten Offlinecode. Mit diesem kann der Kunde dann sein Produkt innerhalb der Zeitspanne aktivieren.

Das Problem ist halt, online kann man zwar viel machen, aber man kann die Leute nicht zwingen online zu sein, sollte man auch nicht, will ich ja genauso wenig.

Gruß Cookiie

31.10.2007 - 09:02 Uhr

Hi,

steht doch eigentlich da was los ist. In der web.config stehen anscheinend viele Befehle für den Netzwerkverkehr drin, zuviele für den Interpreter und deswegen schmeißt es ihn.
Und so wie es für mich aussieht resultieren die folgenden Fehler aus dem fehlgeschlagenen Auslesen.

Gruß Cookiie

30.10.2007 - 08:43 Uhr

Hi,

aus eigener Erfahrung kann ich mich talla nur anschließen.
Auch ohne große Vorkenntnisse ist das Openbook 🛈 von Galileo das non plus ultra.
Es wird sehr gut erklärt und das Niveau steigt auch angemessen. Sollte dir da wirklich was nicht klar sein, kannst du entweder mit F1 die Hilfe im Visual Studio aufrufen, im Openbook nachschauen oder noch besser die Doku :rtfm: zu rate ziehen.
Hier sind im Prinzip sämtliche Objekte, Funktionen oder Propertys erklärt und recht oft auch mit einem Beispiel versehen, so daß man damit einen guten Einblick gewinnt.
Für alle tiefergehenden Fragen kannst du dann dieses Forum verwenden.

Gruß Cookiie

29.10.2007 - 08:53 Uhr

Das sind die Rätzel der Softwareentwicklung^^. Aber deine Fehlermeldung ist recht eindeutig, überprüf nochmal alle Variablen oder Objektinstanzen, ob diese wirklich belegt sind bzw. bau an wichtigen Stellen eine If-Abfrage eine oder mach nen try-catch-block, am besten mit ner Messagebox, welche dir mehr Infos zur Laufzeit liefert.

Gruß Cookiie

26.10.2007 - 09:54 Uhr

So, jetzt läufts.

Mußte aber mein Programm als Dienst umschreiben. Wobei das relativ flott ging.
Hab nen neues Projekt erzeugt, Windowsdienst. Und dann in die OnStart und OnStop Methoden meine entsprechenden Aufrufe. Dann noch 1-2 Variablen definiert und fertig. Auf die GUI hab ich jetzt verzichtet, kann man aber auch noch einbinden wenn man möchte, war bei mir nur unnötig.
Erzeugt wird auch eine Exe-Datei, die man dann mit sc oder dem Resource-Kit einbinden kann.
Der Start lief dann auch ohne Probleme.

Also kann man mal davon ausgehen das in der Exe zumindest die OnStart und OnStop-Methoden integriert sein müssen, damit der Diensthandler weiß was er beim
Start machen soll.

Gruß Cookiie

26.10.2007 - 08:46 Uhr

Wieso sollte das nicht mit foreach gehen?
Wenn deine Bedingung stimmt kein Problem


foreach (Point p in Liste)
{
  Liste.RemoveAt(Liste.IndexOf(p));
}
Liste..TrimToSize();

Klappt bei mir wunderbar, fügst dann noch ne if-abfrage ein und es passt.

Gruß Cookiie

25.10.2007 - 14:40 Uhr

So hab mal testweise die GUI deaktiviert und hab den einzigen Pfad der von extern kommt hardcoded ins Programm geschrieben. Wieder die gleiche Fehlermeldung.

Geht das denn wirklich einfach so mit jeder exe, das man sie als Dienst starten kann oder muss ich da jetzt noch was dran ändern?
Bzw. wenn ich das Programm jetzt als Dienst programmiere geht das mal eben so oder gibts dann andere Hindernisse?

Cookiie

25.10.2007 - 13:56 Uhr

Tja,

nach nem Neustart war der Fehler verschwunden.
Wahrscheinlich mag der parallele Anmeldungen nicht.

25.10.2007 - 13:54 Uhr

Hm, daran sollte es eigentlich nicht liegen.
Wenn ich das Programm so laufen lassen geht es ja auch und der eingelesene Pfad zur DB stimmt. Ist ja auch als absolutpfad gespeichert, sollte also auf jeden Fall passe.
Ich kanns ja mal testweise hardcoded machen und dann mal schaun, obs dann geht.

25.10.2007 - 13:34 Uhr

Hi,

so jetzt stehe ich fast vor dem gleichen Problem.
Ich habe momentan ein Programm mit minimaler GUI, welches Serverdienste zur Verfügung stellt und das möchte ich gerne als Dienst auf dem Webserver und win2k3 laufen lassen.
Dazu habe ich das kommandozeilentool "sc" genutzt. Die Einrichtung hat auch soweit wunderbar geklappt, nur wenn ich dann den Dienst starten möchte, bekomme ich immer folgende Fehlermeldung:

Fehler 1053: Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung.

So, jetzt ist meine Vermutung das ich wohl doch diverse Einstellungen an meinem Programm machen muss. Stört die GUI eventuell dabei? Die könnte ich auch rausschmeißen, war eigentlich eh nur zum Debuggen da.
Bzw. welche Vorraussetzungen muss ein Programm erfüllen, damit es als Dienst läuft?
Will ungern alles neu programmieren.

Gruß Cookiie

25.10.2007 - 11:43 Uhr

Dein Algorithmus zum erstellen des MD5-Hash stimmt.
Es sieht wohl nur so aus das Linux da noch was anderes macht. Ich vermutet mal es erstellt saltet hash, dann wirst du recht wenig Glück haben da aufs gleiche zu kommen.

25.10.2007 - 11:21 Uhr

Hm,

probier mal bei Encoding Default statt UTF8., dann sollten die korrekten md5-hashwerte rauskommen.
Am besten du vergleichst das mit den Hashes die bei Wikipedia, stichtwort md5 aufgeführt sind, dann weißt du das dein Code korrekt is.

Gruß Cookiie

25.10.2007 - 11:14 Uhr

verwendetes Datenbanksystem: Firebird 1.5

Hallo,

ich habe ein Riesenproblem, welches kurioserweise nicht immer auftritt, nur im Moment bekomme ich es absolut nicht mehr in den Griff.
Bei Zugriff meines Programms auf die Datenbank per open(), schmeißt es immer eine Fehlermeldung:

FirebirdSql.Data.Firebird.FbException: operating system directive CreateFile failed

Diese Meldung bekomme ich aber nur wenn das Programm auf dem Webserver läuft und w2k3 läuft. Auf meinem lokalen Rechner läuft alles einwandfrei, auch die zugrunde liegende DB ist gleich.
Manchmal hat ein neu Einloggen auf dem Webserver geholfen, aber diesmal nicht. Ich kanns mir einfach nicht erklären und bin echt schon am verzweifeln.
Auch die Google-suche hat mir da nicht weiterhelfen können.
Ich hoffe irgendwer hat eine Idee.

Gruß Cookiie

25.10.2007 - 10:36 Uhr

Vielleicht für den ein oder anderen auch interessant.

Applikationen-als-Dienste-einrichten

Gruß Cookiie

24.10.2007 - 14:41 Uhr

Hi,
also die Datei wird bei mir nicht als gültiges Zip-Archiv erkannt und selbst Reparatur-versuche sind gescheitert. Also keine Ahnung mit was das gepackt wurde, aber pkunzip ist es nicht. Zumindest nicht in der Version die mir vorliegt, wobei das egal sein sollte.
Ich vermute eher das die Daten hier irgendwie binär abgespeichert wurden und du nur da ran kommst, wenn du die Struktur weißt.

Gruß Cookiie

24.10.2007 - 13:59 Uhr

Hi,

also die Datei ist definitiv nicht gepackt. Sieht mir eher danach aus, das das als Struct abgespeichert wurde. Wenn ich mir das mal mit dem Editor anschaue sieht das bei mir so aus.

Gruß Cookiie

Edit: Code mal wieder entfernt, wegen falscher Datei s.u.

22.10.2007 - 13:33 Uhr

Hi,

woher hast du jetzt diese Werte?

22.10.2007 - 10:48 Uhr

Hi,

ich denke es wäre wichtig zu wissen welche Signalstärke da überhaupt zurückgegeben wird. Aber ich gehe einfach mal davon aus das es die Balkenanzeige von Windows ist.
Demzufolge kannst du davon ausgehen, dass die Signalstärke als Prozentwert zurückgegeben wird.
Sprich, 0% kein Empfang , 100% Volle Power.
Das heißt du hast es relativ einfach im Vergleich, da du da ja nur in deinem WLAN-Fenster schauen brauchst.

Gruß Cookiie

16.10.2007 - 12:14 Uhr

Am einfachsten ist es immer, wenn du ein konkrestes Projekt hast, dann kann man anhand dessen die OO mal aufführen. Also am besten postest du mal ein Projekt in seinen Grundzügen, also was hast du vor zu machen, und dann dazu auch schonmal deine grundlegenden Ideen. Dann können wir die sagen, was wir in diesem Fall für sinnvoll halten. Wichtig ist eigentlich immer, das man sich im vor dem eigentlichen programmieren schonmal Gedanken macht. Das erleichtert es dann hinterher ungemein.
Ich hatte erst vor kurzem den Fall, daß ich nen Programm halb umschreiben musste um einen Löschvorgang sinnvoll zu implementieren.
Vorher hatte ich ein 2-dimensionales Array das ich immer durchforsten musste, und beim löschen in der Mitte, ein Graus sag ich dir. Jetzt hab ich ne Liste die ich mit Objekten meiner neuen Klasse gefühlt habe. Ich kann die Objekte als Ganzes verwalten und hab direkt Zugriff auf die Eigenschaften. Wunderbar einfach und ich würde es nie wieder anders machen.

Gruß Cookiie

16.10.2007 - 10:12 Uhr

Die Äußerung habe ich gemacht, da ich ja nicht die geringste Vorstellung habe wie deine DB aufgebaut ist. Wieviele Tabellen, wieviel Spalten, Einträge etc.
Da meinte ich kannst du ja immer nur 20 Einträge oder so laden oder was weiß ich, das mußt du aber selber entscheiden.
Je nachdem wie du es benötigst, ich hatte dich halt so verstanden das du im Prinzip die ganze DB im Dataset hast^^, keine Ahnung ob ich damit richtig lag.

Gruß Cookiie

16.10.2007 - 08:58 Uhr

Hi,

bei deinem Problem musst du echt die Komplexität des Ganzen beachten.
Je komplexer die Änderungen beim schreiben, desto eher lohnt hier ein Dataset.
Auch wieder in Abhängigkeit von der Konsistens der Daten, also wie schnell ändern diese sich.
Wenn du sagst, du willst das diese Änderungen auf jeden Fall in die DB kommen sollen, finde ich eine Ansammlung der Änderungen schlecht bis sehr schlecht.
Theoretisch mal angenommen du machst 99 Änderungen und bei der 100ten geht was schief, Strom weg was auch immer, willst du die Änderungen nochmal machen?
Was Sinn macht ist die DB so spät wie möglich mit einzubeziehen, das heißt aber das du das Command zusammenbastelst und wenn das alles gemacht ist, db öffnen, execute Reader, db schließen. (oder halt fürs schreiben) mit command.dispose kannst du dieses dann auch sofort danach wieder freigeben, wenns dir um den Speicher geht.
Datasets kannst du ja trotzdem weiter verwenden, musst ja nicht alles reinladen, sondern nur das was du die nächsten paar Änderungen benötigst.
Wie gesagt, alles eine Frage der Komplexität und der Übergang ist da fließend.

Gruß Cookiie

15.10.2007 - 15:27 Uhr

Wenn du die ID's sortieren willst, nimm doch statt nem Array , eine List<obj>, da hast du die Möglichkeit die ID's auf einfach Art und Weise zu sortieren. Für mher Info's schau ins Openbook, da sind nen paar Beispiele die das gut nahe bringen.

Gruß Cookiie

P.S.: ich seh grad noch das doppelte ID's in deiner Auflistung vorhanden sind? Die kannst du ja noch rausfiltern, wenn du die Doppler nicht brauchst.

15.10.2007 - 14:41 Uhr

Ich mag mich irren, aber der '/' am ende der Zeile

<add name="databaseConnection" connectionString="Data Source=Zeus;Initial Catalog=CPM;Integrated Security=True" providerName="System.Data.SqlClient" />

ist der nicht irgendwie falsch bei XML?

15.10.2007 - 11:06 Uhr

Dann verstehe ich den Sinn des Timers nicht, wenn du dir das Ergebnis eh übern nen Event holst, brauchst du doch keinen Timer dafür.
Wann das Event ausgelöst wird hängt ja von dir ab. Eventuell wäre dann auch die Auslagerung des Suchvorgangs in einen Thread sinnvoll. Wenn du Events zum benachrichtigen nutzt hast du auch keine Problem mit Invoke usw.

Gruß Cookiie

15.10.2007 - 10:36 Uhr

Ruf mal die Rekursion ohne this auf, nur so nen Gefühl das es dann klappen könnte.
Etwas verzwickt bei deinem Code durchzusteigen, aber der sollte jetzt eigentlich so stimmen. Ich denke mal da hilft nur noch mit dem Debugger einzeln durchgehen und schauen warum er abbricht. Teste auch mal dein Anfangsarray zu vergrößern, also statt 3 nimm 4 Elemente, wenn er dann zum Beispiel nur 3 anzeigt, weißt du das du einen Aufruf zu wenig hast.
Denke mal viel mehr können wir dir da jetzt nicht helfen.

Gruß Cookiie

15.10.2007 - 09:54 Uhr

Hi, so ein paar grundlegende Sachen, soweit ich die zusammenbekomme.
Wichtig ist erstmal zu wissen, wie sehr verteilt ist deine Anwendung?
Wenn eine Client/Server-Variante übers Internet angedacht ist, wird die einfachste Variante simple TCP/IP-Kommunikation sein. Meines Wissens nach sind die anderen Techniken (außer MessageQueues vielleicht) nicht dazu geeignet global zu funktionieren.
.NET Remoting funktioniert wohl auch nur im Intranet und arbeitet mit Objekten, es werden also keine Daten ansich sondern ganze Objekte verschickt.
Mit dem Rest kenne ich mich jetzt nicht so gut aus als das ich da ne qualifizierte Antwort liefern könnte.

Gruß Cookiie

15.10.2007 - 09:48 Uhr

Hm, ich habe bei mir das Ganze in ner Schleife laufen, mit nem Bool-Wert als Schalter.
Mußte halt dann so implementieren, das du wieder zum Anfang der Schleife kommst, wenn du wieder loslegen willst.

Gruß Cookiie

15.10.2007 - 09:12 Uhr

Jetzt mal mit meinen Kommentaren, vielleicht wird es dir dann klarer wo dein Fehler liegt.

Original von jimbeam

  
//Hier legst du 2 Arrays an die um ein Element kleiner sind, soweit korrekt  
            string[] newHeadlines = new string[headlines.Length - 1];  
            string[] newSubheadlines = new string[subheadlines.Length - 1];  
// Hier durchläufst du die schleife, vom Ersten bis zum Vorletzten Element  
            for (int j = 0; j < headlines.Length - 1; j++)  
            {  
                //Jetzt lösche ich das erste Element, d.h. ich schreibe das Element an der Stelle 1 auf 0 und das Element an der Stelle 2 auf 1  
//und hier addierst du nochmal 1 dazu  
                newHeadlines[j] = headlines[j + 1];  
                newSubheadlines[j] = subheadlines[j + 1];  
            }  
  

Lösung , nimm das neuerstellte Array zum Indexdurchlauf, dann wirds auch klarer was genau passiert.


            for (int j = 0; j < newHeadlines.Length; j++)
            {
//jetzt kommt das raus was du willst
                newHeadlines[j] = headlines[j + 1];
                newSubheadlines[j] = subheadlines[j + 1];
            }

Gruß Cookiie

11.10.2007 - 16:02 Uhr

Ups, ja sorry das mit dem Counter hab ich nicht so ganz realisiert, wobei ich dafür sowieso eher nen bool-wert einsetzen würde und kein int.
Dann fällt mir nur als Lösungsansatz ein, das das neue HUHU das alte einfach überschreibt, teste das mal in dem beim 2ten klick nen anderen String sendest.

Gruß Cookiie

11.10.2007 - 15:39 Uhr

Falsch, schau mal genau was du machst.
Wenn du auf den Button klickst, erzeugst du eine neue Instanz von Notepad und zwar jedes mal und jede Instanz bekommt von dir einmalig den Text"huhuu" geschickt.
Du mußt deinen Code so umschreiben, das er vorher prüft, ob es schon einen Prozess notepad gibt. Am besten über deine Prozess-ID die du ja setzt, und dann kannst du textsenden erneut aufrufen, mit der immer noch gleichen Prozess-ID, dann sollte das auch klappen.

Gruß Cookiie

09.10.2007 - 15:49 Uhr

Eine for-Schleife ist im Grunde genommen nur eine Spezialisierung der while-Schleife.
Also sieht die Lösung für deine Frage so aus:


int i = 1;
while (reader.Read())
{
  parentTable.Rows.Add(new object[] { i, average });
  i++;
}

Also eigentlich ganz simpel, schon fast zu simpel oder?

Gruß Cookiie

09.10.2007 - 11:58 Uhr

http läuft über Port 80
https läuft über Port 443

Gruß Cookiie

08.10.2007 - 18:41 Uhr

Hi little Squirrel,

mein Projekt geht in einen völlig anderen Weg.
Das hier genannte Problem ist nur ein Teil des Ganzen und es funktioniert auch ohne das.
Ich arbeite bei dem Ganzen mit einer Zertifizierung mittels einer DB und das Ganze übers Internet und im lokalen Netzwerk.
Läuft aber tricky nur auf einem Rechner offline, aber da bekomme ich die Daten für Kundenname natürlich nicht übermittelt.
Und der Name soll da auch nur Name sein und hat auch keinerlei weitere Funktion.

Ich hoffe ich habe alle Klarheiten beseitigt 🙂

Gruß Cookiie

08.10.2007 - 17:34 Uhr

Jein^^, hättest geschrieben das der Kunde die Daten eingibt wäre ich wahrscheinlich auch gleich drauf gekommen. So war ich der Meinung das ich Daten (wie in einer DB) auch beim Kunden habe und dann aufgrund des Hashes den richtigen Datensatz raussuche.
Hab da einfach völlig schräg gedacht, wie das halt so ist wenn man in ne bestimmte Richtung sich festgefahren hat, da brauchts dann nen ganzen Zaun damit man sieht was gemeint ist. *grins

Cookiie

08.10.2007 - 17:15 Uhr

Hm, nicht ganz das was ich mir vorgestellt habe, aber du hast mich auf ne interessante Idee gebracht.
Der Kunde gibt die Daten ein und bekommt von mir den Key der die Eingaben verifiziert, fast genial.
Brauch ich nur noch nen kurzen Key der hinreichend eindeutig ist.

/bow B3nj

Gruß Cookiie

08.10.2007 - 15:59 Uhr

Also so ganz richtig ist das nicht.
Je nach Aufgabenstellung muss man da unterscheiden. Die diagonale Strecke ist immer länger, siehe Phytagoras.
Aber, in deinem Fall meint dein Kumpel wohl die oben erwähnte Variante, den Ball 15 Pixel jeweils seitlich und in der Höhe verschieben.
In Zukunft wenn das Spiel komplexer wird muss er da aufpassen und schauen, was genau er will.

Gruß Cookiie

08.10.2007 - 15:50 Uhr

Weil ich die Informationen ja eben nicht auf der anderen Seite habe.
Die andere Seite ist komplett Dumm, die weiß garnichts, jede Information die sie bekommt, bekommt sie von mir über einen Code.
Das geht bei begrenzten Informationen noch recht einfach, wenn wert = 3 dann blabla usw.
Aber wenn ich vorher nicht weiß wie diese Informationen aussehen, kann ich da auch keine Zuweisung machen, zumal die Namensvielfalt das einfach unmöglich macht.
Aber ich werd wohl noch ne Nacht drüber schlafen und mich morgen an meinem Ansatz probieren, mal sehn was dabei herauskommt.

Gruß Cookiie

08.10.2007 - 13:24 Uhr

Die Fehlermeldung sagt dir schon alles was du wissen mußt.
Du hast nicht die notwendigen Rechte, um die Datei löschen zu können.
Das heißt, dein Code stimmt, aber die Rechteverwaltung macht dir da , glücklicherweise, nen Strich durch die Rechnung. Sonst könnte man ja willkürlich Dateien im Netzwerk manipulieren.
Ich weiß jetzt auch nicht 100% wie du an diese Rechte kommst und ob das überhaupt geht.

Gruß Cookiie

08.10.2007 - 11:44 Uhr

Geht genauso, mit DateTime.TryParse(meinDatum), wird ja geprüft, ob der Stringwert ein Datum ist oder nicht. Wenn es keins ist klappt die Umwandlung nicht, einfacher geht es garnicht.

Gruß Cookiie

08.10.2007 - 11:09 Uhr

Hash fällt aus, da ich aus dem Code die Informationen wieder generieren muss.
Ich sag ja, etwas verzwickt das Ganze.

08.10.2007 - 10:14 Uhr

Das ist es ja eben, ich brauch es nicht zum speichern, das soll im Grunde ne Codierte Version des Strings werden die der Kunde als Code bei der Aktivierung seiner Programmversion eingeben soll.
Nur will ich nich das das so nen ellenlanger Code wird, sondern möglichst kompakt bleibt.
Beim speichern wäre ja egal, aber so muss halt was vernünftiges zum eintippen rauskommen.

08.10.2007 - 08:59 Uhr

Hi,

ich habe folgendes Problem, für einen beliebigen String der bis zu 20-30 Zeichen Länge hat, suche ich nach einer Möglichkeit diesen verkürzt darzustellen.
Mal folgendes Beispiel: "Fensterherstellung Müller-Jansen" und als Ergebniss soll dann ein String mit nur der Hälfte an Zeichen (Nummerisch oder Alphanummerisch) rauskommen, kodiert nach Möglichkeit.
Bei meinen Recherchen bin ich auf die Huffman-Codierung gestoßen, allerdings wandelt diese meinen String in eine zufällige Bitfolge um, und da ich die Strings vorher nicht weiß bringt da eine fixe Tabelle nichts. Ich bräuchte wenn, dann eine feste Tabelle, die der Decodierungsstelle auch bekannt ist. Diese hätte dann die Verteilung der Buchstaben im deutschen Sprachschatz integriert. Nun ist die Frage, wieviel bringt das dann noch an Komprimierung?
Im Moment steh ich da ziemlich auf dem Schlauch und ich hoffe ihr könnt mir irgendwie weiterhelfen.

Gruß Cookiie

05.10.2007 - 14:52 Uhr

Beschreibung:

Die Funktion berechnet eine x-stellige Zahl, die die vorher festgelegte Quersumme hat.
Sehr hilfreich bei der Erzeugung von Zufallszahlen die für die Erzeugung von Seriennummer verwendet werden, in denen Informationen versteckt sind.

Gruß Cookiie


		/// <summary>
		/// berechnet ein x-stellige Zahl die die festgelegte Quersumme hat
		/// </summary>
		/// <param name="qs">quersumme</param>
		/// <param name="z">Stellenanzahl</param>
		/// <returns>z-stellige Zahl</returns>
		private string zahlFromQSumme(string qs, int z)
		{
			string strzahl = String.Empty ;
			int zahl = 0;
			int q;
			int min, max = 9;
			try
			{
				q = Convert.ToInt32(qs);
				//maximal z-stellig mit 9 darstellbar
				if (q > max*z || q < 0 || z < 2)
					return strzahl;
			}
			catch (Exception e)
			{
				Console.WriteLine(e);
				return strzahl;
			}
			Random rnd = new Random();
			for (z=z-1; z>1; z--)
			{
				//zahl 1
				min = -1;
				do
				{
					min++;
				while (q < max)
					max--;
					zahl = rnd.Next(min,max);
				}while(q - zahl > max*z);
				q = q - zahl;
				strzahl += zahl.ToString();
			}

			//die letzten 2 Stellen
			min = -1;
			do
			{
				min++;
			while(q < max)
				max--;
				zahl = rnd.Next(min,max);
			}while(zahl > q || (q-zahl) > max);
			q = q - zahl;
			strzahl += zahl.ToString();
			strzahl += q.ToString();			

			return strzahl;
		}

Schlagwörter: Quersumme, Seriennummer, Generator, Zahl

05.10.2007 - 14:45 Uhr

Ok, dann probier ich das am We mal. Danke.

05.10.2007 - 14:35 Uhr

Hi,

ich habe ein ähnliches Problem. Da die generische List aber erst mit .net 2.0 eingeführt wird, was empfiehlt sich da für 1.1 das eine ähnliche Funktionalität beinhaltet?
Kann ich in ArrayLists auch Objekte(Klassen) mit Eigenschaften verwalten?

Gruß Cookiie

04.10.2007 - 12:53 Uhr

Such mal nach Silverlight. Ist im Prinzip nen Java-Applet nur mit .Net. Version 1.1 ist leider noch Beta. Aber vielleicht das was du suchst.

Gruß Cookiie

02.10.2007 - 10:06 Uhr

Erstmal willkommen,

Probier mal selectedItems statt checked.
Und da du neu bist lege ich dir :rtfm: und 🛈 zur Grundlagenforschung ans Herz, damit kannst du schon viele Probleme selbstständig lösen. Damit lernt es sich am besten.

Gruß Cookiie