Laden...
R
Richter myCSharp.de - Member
Student Chemnitz Dabei seit 11.06.2006 104 Beiträge
Benutzerbeschreibung

Forenbeiträge von Richter Ingesamt 104 Beiträge

19.01.2009 - 22:02 Uhr

Du vielleicht nicht, aber andere Menschen 😉

http://weblogs.asp.net/ssadasivuni/archive/2003/08/18/24423.aspx

Dein Programm läuft wohl einfach zu kurz und die Consolenklasse lockt intern! Da ja nur ein Thread gleichzeitig schreiben kann!

19.01.2009 - 21:47 Uhr

Ich denke ich habe die Lösung, die Randomklasse ist wohl ganz einfach nicht Threading-Sicher. Und ich habe nun gerde mehrer Threads gehbat die darauf zugreifen....Multi-Threading ist schon echt kompliziert^^

18.01.2009 - 23:16 Uhr

Nein, du verstehst mich falsch....

Ich hab ein Programm, da benötige ich Zufallszahlen, eine Weile geht das auch....aber irgendwann, da gibt die rnd.next nur noch 0 zurück. Damit ihr mir glaubt, habe ich in so einem Fall, die Random-instanz gespeichert, damit ihr euch sie ansehen könnt. und damit ihr sie einfach laden könnt, habe ich noch den Beispielcode gegeben, der hat nichts mit meinem eigentlichen Programm zu tun, er zeigt nur das sich rnd.next merkwürdig verhält!

18.01.2009 - 20:38 Uhr

Soo, ich habe mal diese Varriable Serialisiert und lade sie hier hoch, und ein Kleines Programm, dass die Varriable läd und das Fehlverhalten zeigt!

using System;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace testground
{
    class Program
    {
        public static object LoadFromFile(string file)
        {
            IFormatter binFmt = new BinaryFormatter();
            Stream s = File.Open(file, FileMode.Open);
            object result = binFmt.Deserialize(s);
            s.Close();
            return result;
        }
        public static object LoadFromFileWithDialog()
        {
            System.Windows.Forms.OpenFileDialog OFD = new System.Windows.Forms.OpenFileDialog();
            OFD.ShowDialog();
            Console.WriteLine(OFD.FileName);
            return LoadFromFile(OFD.FileName);
        }
        [ STAThreadAttribute]
        static void Main(string[] args)
        {
            Random rnd = (Random)LoadFromFileWithDialog();
            Console.WriteLine(rnd.Next(600));
            Console.WriteLine(rnd.Next(600));
            Console.WriteLine(rnd.Next(600));
            Console.WriteLine(rnd.Next(600));
            Console.ReadLine();
        }
    }
}


ich musste der Datei eine zulässige Endung geben. Es ist nicht wirklich eine Textdatei.

Ich hoffe ihr versteht mich nun besser, und könnt mir helfen!

Wie gesagt, eine Weile Funktioniert alles bestens, aber nun das...

18.01.2009 - 19:49 Uhr

Hallo!

Ich habe ein sehr Merkwürdiges Problem.
Ich habe mir eine Varriable vom Typ Random erzeugt und erzeuge mit .Next Zufallszahlen zwischen 0 und 600. Nun gibt dieses Next aber irgend wann immer 0 zurück!

Das ist natürlich nicht im Sinne von Zufallszahlen.
Ich habe die Varable als Static declariert. Damit hängt es aber wohl nicht zusammen. Was könnte da wohl schief laufen?

Ich bin absolut ahnungslos 😦

01.11.2008 - 20:49 Uhr

Die Simulation läuft natürlich so schnell, wie es nur geht. Und du hast vermutlich einen DualCore, und einer der Prozessoren wird zu 100% ausgelastet. Also ingesammt 50%. Man muss den Haken bei "Essen Zeichnen" oder am besten gleich bei "Zeichnen?" aus machen. Das braucht sehr viele Res...und Ram.

Hier eine kleiner Weitergehnde Erklärung:

Zur Funktionsweise:

Jede zelle hat ein turingband, also ein array mit 10000 Feldern

die ersten 25 felder sind mit einer o gefüllt wenn nichts in der umgebung ist oder mit einer 1 wenn etwas zu essen da ist:

etwa so

Welt:
Code:

00E00
000E0
00000
E0000

E ist essen
wird auf dem band etwa zu:
00100000100000010000

So kann die zelle anhand der position der einsen auf dem band erkennen wo etwas zu essen in seiner nähe ist.

Nun zum turingprogramm:
Die turingmaschine zeigt immer auf eine Stelle auf dem band z.b. auf feld 1 in dem eine 2 steht
und besitzt immer einen zustand in dem sie ist z.b. 5

dieser zustand 5 sieht nun z.b. so aus:

wenn 0 auf band schreibe 2 und gehe eins nach links auf band und wechsel zu zustand 3
wenn 1 auf band schreibe 0 und gehe eins nach rechts auf band und wechsel zu zustand 7
wenn 2 auf band schreibe 1 und gehe eins nach links auf band und wechsel zu zustand 1
wenn 3 auf band schreibe 0 und gehe eins nach links auf band und wechsel zu zustand Fertig

wenn beim zeiger eine 2 steht wird an die aktuelle position also eine 1 geschrieben, der zeiger um ein nach links auf dem band verschoben und der zustand 1 aktiviert.

Der zustand wird immer entsprechend dem was auf dem band steht gändert bis der zustand fertig erreicht wurde.

Die KI der zellen sieht nun so aus, das einfach jede Zelle 2000 zustände hat mit deren hilfe das band bearbeitet wird. und einige felder des arrays sind ebend statusflags, die wenn sie ungleich 0 sind etas bewirken, z.B. einen schrit nach oben gehen.

wenn sich eine zelle teilt und mutiert, werden diese zustände Mutiert aus einem

wenn 0 auf band schreibe 2 und gehe eins nach links auf band und wechsel zu zustand 3

wird z.b.
wenn 0 auf band schreibe 1 und gehe eins nach rechts auf band und wechsel zu zustand 3

andere menschen haben die turingmaschine bestimmt schon besser beschrieben, googelt mal!

01.11.2008 - 20:36 Uhr

Nun, wie ich geschrieben habe, dauert es sehr lange, ehe sie wirklich Intelligent werden würden. Aber was man beobachten kann. Die Zellen entwickeln nach und nach effizientere Bewegungsmuster, um Nahrung zu finden.

Wenn man später Zellen hoch laden kann, und runter laden. Dann muss man nicht immer von Null beginnen, und kann vielleicht eher Unterschiede erkennen. Es ist im Moment nur ein kleines weitgehend Sinnloses Experiment, aber mein kleiner Beitrag zum Artificial Life!

Lass es einfach mal bis zu einer Weltzeit über einer Million laufen!

01.11.2008 - 20:11 Uhr

Hallo,

ich habe eine Simulation geschrieben, die Kleine Zellen simuliert. Sie haben eine Turingmaschine als Gehirn, die ihr Verhalten steuert. Der Turingcode stellt das Genom dar, dass sich von Generation zu Generation ändern kann. Die besser angepassten, pflanzen sich fort, und so werden die Zellen immer Intelligenter. Das ganze ist noch eine frühe Beta. Das speichern und laden auf dem Server fehlt noch. Um wirklich Intelligente Zellen zu bekommen, muss man die Simulation wohl ein Paar Jahre laufen lassen. Es ist halt nicht so leicht 100 Millionen Jahre Evolution nach zu holen^^

Ich habe es in eine Silverlight-Anwendung gesteckt. Später soll es dann eine Verteilte Anwendung werden, in der Erfolgreiche Zellen zu anderen Benutzern verteilt werden können.

Tipps und Tricks gerne an mich!

Und hier der Link:
http://www-user.tu-chemnitz.de/~rimarc/cms/?Nevu_-%26nbsp%3Bdie_Simulation

Es sprengt das Design meiner Page, aber was solls^^

Wenn man die Visualisierung ausschaltet Läuft die Simulation viel schneller. Leider gibt es keine Pixelgrafiken in Silverlight so das jedes Pixel mit einem Rect simuliert wird, sehhr langsam...aber Hauptsache es läuft.

Viel Spaß beim zusehen!

PS: Ich bräuchte einen PHP-Programmierer, der den Serverseitigen Teil umsetzt. Wer sich berufen fühlt, Melden!

28.10.2008 - 00:22 Uhr

Hallo,

ich habe eine Silverlight-Anwendung die etwas Simmuliert. Diese Simulation soll nun ständig laufen, und man ihr zusehen können. Leider wenn die Simulation läuft, blockiert die GUI. Also habe ich mir gedacht. Einen Moment Simulation laufen lassen und dann die Funktion verlassen. So das die Gui auf eingaben reagieren kann. Und dann wieder die Simulation aufrufen. Ich möchte nicht mit Timern arbeiten. Es muss doch möglich sein, Etwas zu berechnen, dann mal kurz nach zusehen ob es Benutzeraktivität gibt und das Bild der Sim neu male und dann weiter zu rechnen? Parralele Threads gingen nicht, da ich da nicht mehr auf die GUI zugreifen konnte, also Rectangles zufügen usw...

Ich hoffe ihr versteht mich!

Großes danke jetzt schon!

Marcel!

24.07.2008 - 14:30 Uhr

Hallo,

ich bastle an einer Simulation, die sehr rechenaufwendig ist. Also wollte ich sie gerne auf mehreren Rechnern verteilt laufen lassen.

Die Simulation soll dann nur noch Aufträge erteilen, und die Teilergebnisse zu einem ganzen zusammen fügen.

Also die Simulation ist der Server zu dem Clients verbinden und sich die Aufträge holen. Die Aufträge wären denke ich Serielizierte Klassen, die als Parameter für eine Funktion gegeben sind, und zurück werden dann wieder Serialisierte klassen geschickt, die das Ergebniss beinhalten.

Das ganze sollte möglichst auch über das Internet funktionieren.

Alles ist in c# und auf die Sicherheit muss nicht sonderlich geachtet werden. Da es nur auf sicheren PC laufen wird, die unter meiner Kontrolle stehen.

Für Anregungen oder Komplet andere Lösungsstradegien, wäre ich sehr dankbar.

LG


Ok, Remote ist das Zauberwort, echt cool, interesante dinge darüber im Forum gefunden. Thx!

07.07.2008 - 13:20 Uhr

Danke sehr, deine Hilfe hat mich auf die richtige Spur gebracht:

http://www.codeplex.com/AvalonDock

07.07.2008 - 12:41 Uhr

Hallo,
im Visual Studio kann man ja die einzelnen kleinen Fenster wie Status, CodeEditor und ClassView beliebig anordnen, ganz nach den eigenen Wünschen. Wie heißt diese Fähigkeit? Wie kann man soetwas in WPF umsetzen? Ich bitte vorallem um Stichworte, da ich einfach gar nicht weiß, wonach ich suchen soll.

Danke Sehr!

02.07.2008 - 15:50 Uhr

Du könntest das klickevent des Listitems abfangen und dann quasie in Handarbeit selber rausfinden, über die Mauskoordinaten, welche Butten getrückt wurde. Das ist ja mit dem VisualTreeHelper sehr einfach.

Aber ich vermute mal, es gibt noch eine elegantere Lösung

02.07.2008 - 12:25 Uhr

Ach, wie immer ist es in Wirklichkeit ganz einfach... nur drauf kommen ist schwer.


<HierarchicalDataTemplate DataType    = "{x:Type src:Business}"
                                ItemsSource = "{Binding Path=Nachbarn}">
                    <TextBlock Text="{Binding Path=Name}"/>
      </HierarchicalDataTemplate>

als einziges Template brachte den Gewünschten Erfolg.

02.07.2008 - 11:16 Uhr

Hallo, ich Probiere mich im Moment an einem TreeView.

ich will folgendes darin darstellen:

Ich hab die Grundklasse, die die Daten enthält:


public class Business
    {
        private BusinessCollection neighbors; //jede merkt sich ihre Nachbarn
        private String pname;
        public BusinessCollection Nachbarn
        {
            get
            {
                return neighbors;
            }
        }
        public String Name
        {
            get { return pname }
        }
    }

Und dann eben noch diese Collection, da gibts aber nicht viel zu sehen:


public class BusinessCollection : ObservableCollection<Business>
    {

        public BusinessCollection()
        {

        }
    }

Ich wollte nun Gerne dem TreeView einfach eine solche Collection übergeben können und er sollte die BussinesItems darstellen, und wenn man aufs Plus Klickt, die Nachbarn zeigen, die Nachbarsnachbarn anzeigen zu können wäre schön aber nicht unbedingt nötig.

Ich hatte mir dazu mit hilfe der MSDN folgendes xml gedacht:


<DockPanel Name="innerPanel" LastChildFill="True">
      <DockPanel.Resources>
          <HierarchicalDataTemplate DataType    = "{x:Type src:BusinessCollection}"
                                ItemsSource = "{Binding Path=Nachbarn}">
                    <TextBlock Text="Bussines mit Nachbarn"/>
           </HierarchicalDataTemplate>
           <DataTemplate DataType="{x:Type src:Business}">
                <TextBlock Text="{Binding Path=Name}"/>
            </DataTemplate>
      </DockPanel.Resources>

       <TreeView Height="200" Name="treeView1" Width="120" />
                
</DockPanel>

Leider Sehe ich wenn ich nun so eine Collection übergebe nur eine Liste der Bussines, ohne die Möglichkeit sie zu expandieren, um die Nachbarn zu sehen.


BusinessCollection bCollection =new BusinessCollection()//wird im Constructor mit Zufallszeug gefüllt
treeView1.ItemsSource=bCollection;

Ich hoffe ich konnte mein Anliegen verständlich Ausdrücken und bin für jede Hilfe sehr dankbar.

04.05.2008 - 10:48 Uhr

Hey, danke. Da war ich mal wieder ganz kurz vor einer Lösung und sehe sie leider nicht selber. Danke!

Für den fall, dass irgendwann jemand das gleiche Problem mit Tabs hat:


<TabControl Margin="26,21,19,27" Name="tabControl1">
            <TabControl.Resources>
                <Style TargetType="{x:Type TabItem}">
                    <EventSetter Event="MouseDown" Handler="MyTabItemHandler"/>
                </Style>
            </TabControl.Resources>

            <TabItem Header="tab1" IsSelected="True"></TabItem>
            <TabItem Header="tab2" IsSelected="True"></TabItem>
        </TabControl>

        private void MyTabItemHandler(object sender, RoutedEventArgs e)
        {
            ((TabItem)sender).Background=Brushes.Red;
        }

04.05.2008 - 00:04 Uhr

Hallo!

Ich habe mich durch die MSDN gearbeitet und bin auf RoutetEvents gestoßen und dann auf EventSetters. So wie ich das verstanden habe, kann man damit UIElementen neue Events zuweisen. Und da wllte ich dem Tabitem-Element das Clickevent geben. Aber irgendwie funkoniert das leider nicht.


       <TabControl Margin="26,21,19,27" Name="tabControl1">
            <TabControl.Resources>
                <Style TargetType="{x:Type TabItem}">
                    <EventSetter Event="Click" Handler="MyTabItemHandler"/>
                </Style>
            </TabControl.Resources>

            <TabItem Header="hallo" IsSelected="True">hallo</TabItem>
            <TabItem  IsSelected="True" IsHitTestVisible="True" />
        </TabControl>

Der Fehler:
Cannot find the Style Event 'Click' on the type 'System.Windows.Controls.TabItem'. Line 11 Position 48.

Wie kann ich den Styleelement von TabItem dieses Event hinzufügen? Damit es funktioniert?
Ich danke euch ganz herzlich für eure Hilfe!

03.05.2008 - 18:58 Uhr

Leider führt der Link auf kein Beispiel, dass die WPF benutzt. Werde ich wohl ein eigenes Tab bauen müssen. Danke für die Hinweise!

03.05.2008 - 17:38 Uhr

Schönen guten Tag!

Ich brauche ein besonderes Tabcontrol, dass wenn man einen Tab anclickt dieses in den Vordergrund kommt. Und wenn man mit rechtsklick darauf klickt, sol es nicht in den Vordergrund kommen, sondern nur der Tabname eine andere Hintergrundfarbe bekommen, damit man sieht das es ausgewählt ist. Und irgendwie sollte man noch rausfinden können, welche Tabs auf diese art markiert sind!

Wozu brauch ich das?

Alle Tabs die entweder zu sehen sind, oder eben so markiert, deren Inhalt soll gedruckt werden. Wie ich einen Tab drucke, weiß ich, aber wie ich rausfinde welche noch angeklickt sind weiß ich nicht.

Leider bin ich so ahnungslos, dass ich nicht mal weiß, wonach ich googeln sollte. Also bin ich für alles dankbar, Stichworte, Links oder Codeschnipsel.

Leider bin ich kein guter Redner, ich hoffe ihr hab trozdem verstanden, worum es mir geht.

Dank im Voraus!

08.04.2008 - 22:14 Uhr

klar geht das,

Etwa so in Pseudocode:

MyByte = ReadByte

for(int i=0;i<8;i++)
{
Writeline(MyByte%2);
MyByte=MyByte/2;
}

nächstes Byte einlesen und wiederholen.

06.04.2008 - 17:58 Uhr

Ok 😁

Selber denken macht schlau^^

habe eine Lösung gefunden:


            PrDlg.ShowDialog();


            RenderTargetBitmap rtb = new RenderTargetBitmap(
                (int)this.ActualWidth,
                (int)this.ActualHeight,
                90,
                90,
                PixelFormats.Default);

            rtb.Render(this);
            System.Windows.Controls.Image img =  new System.Windows.Controls.Image();
            img.Source = rtb;
            


            PrDlg.PrintVisual(img, "testdruck");

Jetzt verstehe ich auch, warum keiner geantwortet hat, es war zu einfach^^

06.04.2008 - 12:38 Uhr

Hallo!

ich habe mir mit Hilfe der MSDN folgendes zusammengeschustert:



        private void JustPrint_Click(object sender, RoutedEventArgs e)
        {
            //Drucker aussuchen
            PrDlg.ShowDialog();


            DrawingVisual drawingVisual = new DrawingVisual();

            // Retrieve the DrawingContext in order to create new drawing content.
            DrawingContext drawingContext = drawingVisual.RenderOpen();
 
            //Hier will ich das Aktuelle Fenster, auf dem ein paar bunte Boxen sind, 
            //in das Drawing Visual bekommen!
            drawingContext.DrawDrawing(VisualTreeHelper.GetDrawing(this));

            //eine box als test
            Rect rect = new Rect(new System.Windows.Point(160, 100), new System.Windows.Size(320, 80));
            drawingContext.DrawRectangle(System.Windows.Media.Brushes.LightBlue, (System.Windows.Media.Pen)null, rect);
            // Persist the drawing content.
            drawingContext.Close();

            
            PrDlg.PrintVisual(drawingVisual, "testdruck");   
        }

Leider wird nur die blaue Box geruckt.

Wenn ich PrDlg.PrintVisual(this, "testdruck") benutze wird das Fenster gedruckt.

Warum geht mein Weg nicht?

Wie kann ich sonst ein Bild vom Fenster oder einem anderen Visual bekommen, um es nach belieben zu Verändern, ohne das Original zu verändern? zb wenn das Fenster zu groß ist, Bild nehmen und verkleinen. Und erst dann drucken.

Für Leitfäden und Stichworte bin ich sehr dankbar!

30.03.2008 - 13:47 Uhr

Hallo,

ich möchte in etwa folgendes machen:


class testclass{...}

type SpeichertType=testclass;

(SpeichertTyp) NeueVariableVomTypInSpeichertTyp=new SpeicherTyp();

Also in Worten:
Einen Typ irgenwie Speichern, und dann zur Laufzeit ein Objekt mit dem gespeicherten Typ erstellen.

Wie mache ich so etwas?

Mein Problem ist einfach, dass ich nicht weiß, nach welchen Stichworten ich suchen soll.

Danke schon im vorraus!

21.03.2008 - 13:38 Uhr

Danke sehr!!

jaensen, du bist ein Held 😁

19.03.2008 - 23:41 Uhr

Hallo,

ich beschäftige mich im Moment mit dem Drucken in NET.

Seit NET 1.1 und 2 hat sich wohl einiges getan.
Zuerst bin ich auf das Galileo Openbook gestoßen mit System.Drawing.Printing . Aber dann auch auf der MSDN Seite, auf System.Printing .

Ich habe auch die Forumsuche benutzt, allerding benutzten alle immer das "ältere" System.Drawing.Printing .

Wie ist den nun der aktuelle Weg, etwas auszudrucken?

Vielleicht ein XPS-Dokument erstellen und dieses dann Drucken? Oder geht es etwas direkter mit weniger Umwegen?

Genaugenommen möchte ich nichts weiter, als ein System.Drawing.Image auszudrucken in einer WPF-Anwendung.

Ich bin noch unerfahren in C#, .NET und WPF, freue mich deswegen über eure Hilfe!

16.11.2007 - 10:53 Uhr

Es tut mir Leid, aber ich weis nicht, was refactorieren ist.

Ich habe natürlich gegoogelt und gefunden, dass es das Umbauen, und Umstruckturieren von Code ist. Aber was soll mir das helfen? Ich will den Code nicht Umändern, er ist schon sehr sauber. Nur ich Arbeite an einem LapTop, da ist einfach wenig Pltz auf dem Display, so das mehr möglichkeiten den Code zu Falten sehr hilfreich wären. Trozdem Danke für eure Hilfe!

15.11.2007 - 17:44 Uhr

Hallo!

kann man irgendwie dafür sorgen das Visual Studio 2005 Professionel, kostenlos für Studenten, auch bei jedem IF eine Möglichkeit einblendet um den Code zu falten so das man nur noch die Bedingung aber nicht den Code sieht, der ausgeführt wird, wenn die bedingung erfüllt ist?

if(true)
{
....
....
....
}

soll also am besten zu


+if(true)

werden.

Oder kann ich das nicht ohne #region lösen?
Ich danke sehr.

22.08.2007 - 15:14 Uhr

Sorry für die Ungenaue Problembeschreibung, aber während ich das Problem genauer beschreiben habe ist mir etwas aufgefallen das mich zu einer Lösung geführt hat.

Also naja mein ergebnis ist nun lparam=65535*y+y+x

Ich weis nicht warum das funktioniert, aber es funktioniert!

22.08.2007 - 14:55 Uhr

Hallo,

ich sende mit SendMessage_(hWnd,WM_LBUTTONUP, 0, lparam)
an ein anderes Programm das die Linke Maustaste gelöst wurde.

In lparam sind die x und y Koordinaten gespeichert.

MSDN sagt folgendes:

lParam
The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.

Da dachte ich mir Die Koordinaten müsste man etwa so in lparam unterbringen können:
lparam=65535*x+y

Aber das funktioniert nicht, bitte helft mir.

21.08.2007 - 20:09 Uhr

Oh klasse!

Kannst du mir mit 2-3 Worten erklären was [STAThread] macht?

21.08.2007 - 20:02 Uhr

Hallo,

ich hab ein WinForm und will es ermöglichen Dateien hinein zu ziehen.

Aber wenn ich das Programm starte kommt ein "Fehler bei der DragDrop-Registrierung" Bei Application.Run();



public partial class MainForm : Form
    {
        static void Main()
        {
            Application.Run(new MainForm());
        }
        public MainForm()
        {
            InitializeComponent();
        }
        private void InitializeComponent()
        {
            // 
            // MainForm
            // 
            this.AllowDrop = true;
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(294, 357);
            this.Name = "MainForm";
            this.Text = "Nevu.net";
            this.ResumeLayout(false);
            this.PerformLayout();

        }
    }
}


Ich weis die EvendtHandler fehlen, aber das ist nicht verantwortlich für diesen Fehler.

Habe ein Neues Projekt gemacht und AllowDrop auf true gesetzt ohne die Events zu behandeln und da ging es.

An meinem Fenster muss irgend etwas besonderes sein 😁

Ich danke euch für eure Hilfe!

18.08.2007 - 14:13 Uhr

Hi,

ich möchte gerne Wissen was passiert wenn etwa folgender Code in c# auf einem DualCore ausgeführt wird:

Procedure Dec100000mal()
for(int i=0;i<100000;i++)
Globale_variable--;
EndProcedure

StartThreaded(Dec100000mal)
StartThreaded(Dec100000mal)
WaitForThreadsFinish()
Show(Globale_Variable);

Würde das Programm abstürtzen, oder Globale:Variable nur -180000 sein weil einige Dec nicht ausgeführt werden? oder wartet der andere Prozessor einfach bis er zugreifen kann? Es wird ja garantiert gleichzeitig auf den Ram zugegriffen.

Ich hoffe der PseudoCode ist eindeutig. Ich habe leider keinen DualCore zur Verfügung um das selber zu testen.

Richter!

25.07.2007 - 10:53 Uhr

Uh, das ist Richtig Cool.
Bau unbedingt ein, dass man eigene Funktionen in deiner Scriptsprache erstellen kann. Dann könnte ich es Wunderbar in einem Projek von mir einsätzen, damit jeder damit eine eigene KI für das Spiel schreiben kann. Mach ja weiter 😁

25.06.2007 - 19:19 Uhr

Das ist eine Wirklich sehr gute Idee, du verstehst dein Handwerk 👍

25.06.2007 - 16:56 Uhr

Damit er weniger Strom braucht und kühler bleibt. Sonst läuft der Lüfter immer auf Volldampf.

25.06.2007 - 15:27 Uhr

Hi, ich hab einen sehr rechenintensive Simulation die ich im Hintergrund beim normalen Arbeiten laufen lassen will.
Kann man dem OS irgendwie sagen dass das Programm maximal 20% Auslastung erzeugt? Also wenn nichts weiter läuft, soll der Prozessor zu 20% ausgelastet sein und nicht auf 100% konstant hängen. Die Priorität zu ändern hat es nicht gebracht. Und Delays einzubauen ist etwas schwirig, da dass ja auch vom Prozessor ab hängt!

Habt ihr Ideen?

Danke!

Richter!

25.06.2007 - 10:19 Uhr

Ja, du speicherst den String der zb so aus sieht: "var1=4, var2=45..." und beim Laden holst du dir selber die Daten wieder aus dem String und Speichserst die Daten in der Instanz. Das kannst du nicht von C# alleine machen lassen. String != object. Aber es gibt ja jede Mänge StringManipulationsbefehle die dir helfen können.

Edit:

Ok, herbivore war natürlich schneller und hat eine bessere Lösung 😁

25.06.2007 - 09:48 Uhr

Nicht auf einer Festplatte speichern, sondern einfach nur kurz Speichern m Ram.

Danke für eure Hilfe durch den Link und eure Hilfe ist mir einiges Klargewurden.

Schönen Tag noch!

25.06.2007 - 09:31 Uhr

Das ist aber nicht so toll, jetzt muss ich immer dieses get implementieren. In manchen abgeleiteten Klassen ist dies aber gar nicht nötig. Da muss einfach nur der Wert gespeichert werden und in anderen abgeleiteten Klassen, soll er berechnet werden. Soll nur ebend nach ausen immer gleich aus sehen.

Ich hoffe du verstehst mich.

Bin für deine Hilfe trozdem sehr dankbar, jetzt kann ich wenigstens weiter arbeiten.

25.06.2007 - 09:17 Uhr

Hallo!

Ich hab eine abstracte Klasse:


abstract public class acTest
    {        
        public int EinenIntSpeichern;
    }

und eine Erbende Klasse:



public class ClassName:acTest
    {
        public int EinenIntSpeichern
        {
            get
            {
                 Console.WritelLine("Das hier wird nie aufgerufen");
                 return 5;
            }
        }
        
    }

Hab viele Varianten mit override oder new versucht, aber nicht das gewollte erreicht.
Das ganze Kompiliert gar nicht erst oder, wenn ich den Wert Abrufe, kommt nicht 5 sondern 0 raus!

Wie bekomm ich das richtig hin?

Bin für jede Hilfe sehr dankbar!

21.06.2007 - 13:24 Uhr

Danke Danke! Du bist ein Held und ich zu doof 😁

21.06.2007 - 11:00 Uhr

Hallo,

entschuldigt den vielleicht nicht ganz passenden Titel. Mir viel kein besserer ein.

Hier das Problem. Ich habe 20 000 vorausberechnete werte die eine Funktion je nach Parameter zurückgeben soll. Jedesmal den Wert neu zu berechnen, dauert zu lange.

Hier meine jetzige lösungen:


using System;
using System.Collections.Generic;
using System.Text;

namespace PokerB
{
    class StaticProbData
    {
        Double[] Prob = new double[24335];
        public StaticProbData()
        {
            #region
            Prob[1] = 0.402666666666667;
            Prob[2] = 0.411333333333333;
            Prob[3] = 0.426333333333333;
            Prob[4] = 0.422;
            Prob[5] = 0.43;
            Prob[6] = 0.445666666666667;
            Prob[7] = 0.448;
            Prob[8] = 0.486;
            Prob[9] = 0.508333333333333;
            Prob[10] = 0.522666666666667;
            Prob[11] = 0.558;
            Prob[12] = 0.596666666666667;
            Prob[13] = 0.526;
            Prob[14] = 0.380333333333333;
            Prob[15] = 0.372666666666667;
            Prob[16] = 0.392666666666667;
            Prob[17] = 0.402333333333333;
            Prob[18] = 0.403666666666667;
            Prob[19] = 0.431333333333333;
            Prob[20] = 0.432666666666667;
            Prob[21] = 0.461333333333333;
            Prob[22] = 0.472333333333333;
            Prob[23] = 0.498;
            Prob[24] = 0.537;
            Prob[25] = 0.578666666666667;
    .
    .
    .
            Prob[24327] = 0.157666666666667;
            Prob[24328] = 0.162666666666667;
            Prob[24329] = 0.161;
            Prob[24330] = 0.176333333333333;
            Prob[24331] = 0.195;
            Prob[24332] = 0.203;
            Prob[24333] = 0.202333333333333;
            Prob[24334] = 0.220666666666667;
            #endregion
        }
        public double Get(int x, int y, int w)
        {
            return Prob[(w - 1) * 52 * 52 + ((x * 52) + y)];
        }
    }
}


Aber diese Lösung gefällt mir nicht so, den ich muss eine Instanz der Classe haben und die IDE baucht nun deutlich länger um den Code überhaupt nur zu laden.

Es gibt bestimmt eine sehr einfache Lösung, aber ich steh auf dem Schlauch. 🤔

Für Hilfe bin ich sehr Dankbar.
Ich benutze Microsoft Visual C# Express

Mit freundlichen Grüßen!

Richter!

18.06.2007 - 08:47 Uhr

Ich hab das Problem nun lösen können. Hab aber eine andere Frage. In wieweit kann man Gleichzeitig auf Variablen zugreifen?

Kann man Gefahrenlos auf int und strings aus 4 und mehr Threads gleichzeitig zugreifen?

Vorallem solche Sachen:
z++;
z--;
if(z==irgendwas){...}

Und welche Typen sind noch sicher? Ein Link oder Stichwort wäre ganz toll!

17.06.2007 - 18:32 Uhr

Hi,

ich hab eine Schleife, die in jedem Durchlauf einen Wert berechnet und am Ende wird der Durchschnitt der Werte berechnet.
Das funktioniert auch, ist nur etwas langsam, denn die Berechnungen könnten parallel ausgeführt werden und zwar je nach dem wieviele Prozessoren da sind.

Wie ich die Anzahl der Prozessoren erfahre weis ich. Nur wie ich das hinbekomme, das ein Thread x andere Threds(je nach dem wieviele Cores) am laufen hält und dabei nicht selber unnötig CPU-Last verursacht bekomm ich nicht hin.

Hab im OpenBook zu Multithreading und asynchrone Methodenaufrufe gelesen, Joins klangen gut, aber damit kann ich ja nur einen Thread überwachen. Ich bin im Moment irgendwie etwas Geistig blockiert. X(

Für Hilfe bin ich sehr dankbar!

Mit Freundlichen Grüßen!

Richter!

10.06.2007 - 01:25 Uhr

Was willst du meit deinem Aaach sagen?
In der Exe sind sie ganz bestimmt nicht sicher.
Die haben Trojaner an eine Universität eingeschleust um den ihre PokerBot-Forschungsdaten zu kaluen. Wer das schafft, der friemelt auch eine KI aus 50 KiloByte Daten herraus!

Nur mal so am Rande.

Eine PokerKi die in der Stunde im Schnitt einen Dollar pro Tisch verdient, ist 5000 Dollar wert!

09.06.2007 - 20:39 Uhr

Wie gesagt, ich habe stärkere KIs die auch Bluffen usw, aber die Stelle ich nicht einfach ins Netz. Ihr glaubt es vielleict kaum, aber gute PokerKIs sind viel Geld wert! 8)

09.06.2007 - 13:04 Uhr

Die KI schummelt nicht 😉 Nur der Benutzer kann, wenn er will dir Karten der anderen sehen.

08.06.2007 - 23:58 Uhr

Hm, wirst du zum Informatiker oder zum Programmierer ausgebildet? Je nach dem ist Mathe unterschiedlich wichtig würde ich sagen!

Informatiker brauchen mehr Mathe und Programmierer müssen ihre Programmiersprache beherrschen.

Oder wie seht ihr das?

08.06.2007 - 20:42 Uhr

Ich benutze AppendText bereits. So funktioniert es leider nicht