public class Attack
{
public int ExecutorID {get; set;}
public int TargetID {get; set;}
public bool AbortOnExecutorDeath {get; set;}
public Ability UsedAbility {get; set;}
// etc etc
private void ExecutorDeath ()
{
if(AbortOnExecutorDeath)
UsedAbility.Abort();
}
}
public class Unit
{
// etc etc
public delegate void dDeath ();
public event Death = new dDeath();
public void attack(Unit Target)
{
if (this.AP >= Ability.Cost)
{
int id = attacks.Count + 1;
attacks.Add(new Attack(){this.ID, Target.ID, true, foo});
Death += attacks[id].ExecutorDeath;
}
}
private void die ()
{
if (Death != null)
Death;
}
}
Einfach mal so runtergeschrieben... Ich hoffe ich konnte weiterhelfen.
Das du, sobald ein Thread auf ein bestimmtes Objekt zugreifst, es für andere Threads blockierst (wobei du dabei bedenken solltest, das wenn du ein Objekt lockst, die anderen Threads, die zufällig drauf zugreifen wollen, warten bis das Lock freigegeben wird. D.h. die Operationen, während ein Objekt gelockt ist, gering halten.
1.1: Würde sagen, ja
2.1: Kommt auf die Vearbeitung der Daten im Server an
2.2: Keine Ahnung, Sorry
3.1: Sollte sowohl Linux(Stichwort: Mono) als auch Windows Server gehen
3.2: Keine Ahnung, Sorry
Naja, Man kann im LINQ to SQL Schema Queries (zumindest heißt das so bei der CE Datenbank) importieren - d.h. wenn ich die Methode von der Klasse in die Datenbank verlegen würde, würde es gehen. Wo ich mir das überlege, wäre das wohl sogar inteligenter, da diese Methoden eh nur Datenbankabfragen sind. Nur wie geht das in der CE?
verwendetes Datenbanksystem: LINQ to SQL mit MSSQL CE 3.5
Ich benutze folgende LINQ-Query:
var x = from s in db.mapSystems
where s.Security < 0.45 &&
CalcDistance(start, s.Name) < range
select s.Name;
Wobei CalcDistance eine Methode in der Klasse ist, in der das Query benutzt wird.
Für CalcDistance(start, s.Name) bekomme ich nun bei der Ausführung folgende Exception:
Für die Double CalcDistance(System.String, System.String)-Methode gibt es keine unterstützte Übersetzung in SQL.
Ist es möglich, trotzdem diese Methode in diesem Query so zu verwenden, oder muss ich sie in der Datenbank erstellen?
Nimm als Grundlage den .net Connector von der mysql-page, das dürfte einiges erleichtern.
Super,
hat funktioniert, danke für den tollen Beitrag.
Nur noch eine Frage zum Verständnis:
Was bewirkt (Nachname LIKE ISNULL(@Nachname,'%') genau?
Wenn Nachnake NULL ist nix nehmen ansonsten @Nachname?
Kann man das so übersetzen?
Welchen Zweck hat das '%'?Danke für Deine Hilfe.
Gruß Maximus.
(Nachname LIKE ISNULL(@Nachname,'%')
Wenn Nachname != null wird @Nachname genommen, ansonsten alles (% = wildcard der soviele zeichen wie möglich nimmt, da es hier alleine steht -> alles)
Ich meine mich zu erinneren Binär gespeicherten Text in einer MySql Datenbank gesehen zu haben - mit dem Feldtyp Blob.
PaperSize paperSize = new PaperSize();
paperSize.Height = 250;
paperSize.Width = 50;
ps.DefaultPageSettings.PaperSize = paperSize;
Du kannst es dir aber immer noch im Object Explorer angucken.
Guck dir doch einfach die Methoden im Objekt Explorer an, bzw wenn du this.blabla schreibst und dann nen "." dransetzt, müsste intelisense dir eine Liste mit Methoden geben, dann kannste einfach durchscrollen und auswählen.
Der Typ- oder Namespacename "Outlook" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)
Sagt doch schon alles. Guck mal bei deinen Verweisen/im using block.
Dafür haben in der Informatik viele Pädagogen den anschluss verpasst,
und unterrichten immernoch pascal.
Oja, das stimmt. Es ist zwar Delphi bei mir - Aber was soll ich damit? Bis jetzt habe ich bis auf eben ne neue Programmiersprache, die sowieso schon alt und abgelöst ist, nichts, aber auch garnichts neues gelernt.
(Bin 11. Jahrgang Gymnasium)
Guck dir mal System.Math an, da wirste alles finden. Für deine spezielle Frage System.Math.Sqrt(double d)
Also den 344er comic sollte man komplett lesen (also 3 schritte zurück) weils ne fortlaufende Geschichte erzählt.
([\w]+*{1})([\d]+)
müsste es glaube ich sein. Bin mir nicht ganz sicher mit der ersten Gruppe.
Ich sage es dir mal aus meiner Erfahrung:
Ich habe im Alter von 14 angefangen mit PHP, und dann etwas später (15 einhalb oder so) mit C#. Das was wirklich gedauert hat war die Anwendung von OOP... Jetzt bin ich fast 17. Mach dir keine Sorgen, du wirst es auch noch verstehen. Vorallem wenn du tatsächlich ein Praktisches Beispiel machst (jetzt nicht irgendwas aus dem Kontext gerissen, sondern ein ganzes Projekt) dann kommt das praktische Denken in OOP von ganz alleine. Einfach nicht entmutigen lassen.
Femaref
Eventuell die Express Version von C++ aber die ist deinstalliert und da war auch keine JIT-Option... Hatte da nämlich auch schonmal geguckt wegen was anderem.
Auch das erstellen eines neuen Projektes und hinzufügen des Quellcodes hilft nicht...
ich habe den Hacken bei Show all Settings drin und der Menüpunkt für JIT ist nicht vorhanden.
Keine speziellen, das ist es eben.
statt der 1136 eben andere Nummern... und egal wie häufig ich das Fenster wegklicke, es taucht solange auf bis ein nicht-Windows Forms Projekt als Startup festgelegt wird.
Edit: Löschen im bin Verzeichnis bzw Rebuild bringt auch nix.
Als ich heute(wie die letzten Tage auch) mein Projekt im VS C# Express 2008 geöffnet habe, bekomme ich vom vshost mehrere verschiedene Exceptions wenn ich ein Windows Forms Projekt als Startupproject setzte.
Ich habe keinen Ansatzpunkt wodurch dies hervorgerufen wird, auch ein Backup von vor 2 Tagen hat diese Probleme.
Hat wer anders diese Probleme auch schon gehabt und kennt eine Lösung?
Ich würd die ganze MaskedTextBox-Geschichte nicht so streng gestalten, also zb. Punkt/Komma beim Startbetrag zulassen (bei Zins wurds ja schon angesprochen) und den gesamten Code dann in nen try/catch-Block stecken, und die etwaigen Exceptions einzeln abfangen (zb. Exception wenns beim Konvertieren fehlschlägt, bei leerer Box)
dezimal /= 2; //lang: dezimal = dezimal / 2;
a) Die Labels für Jahre und Zinssatz ragen in die Textboxen rein
b) Nicht abgefangene Exception bei leeren Textboxen
Ansonsten siehts gut aus.
Kanns grad net überprüfen, aber System.Text.ASCIIEncoding müsste dir weiterhelfen.
Ich kanns mal allgemein beantworten... Kommt bei mir auf die Tagesform sowie den Fragenden an. Wenn er mitdenkt, und meine Hilfen beherzigt und anwendet, gern. Wenn ich für ihn denken soll, ist Ende. Helfen gerne, Denken nein.
Uhm... da kann ich dir leider nicht weiterhelfen.
Was meinst du denn? Ich habe deine Frage so verstanden, das du etwas suchst womit du aus C# ne Verbindung auf nen Mysql-Server herstellen kannst.
Eventuell mit nem Regex die Unicodeespacesequenzen matchen und dann manuell umwandeln?
Gibt auf der mysql-Seite nen Interface für .net zum runterladen (inkl Doku etc, ist sehr einfach verständlich)
Truncate solltest auch noch nehmen.
Also so wie ich das sehe lädst du auf einen HTTP-Server hoch... Wie wärs wenn du stattdessen über C# direkt auf den FTP zugreifst?
Bin sehr zufrieden, läuft schneller beim Debuggen, allgemein flüssigere Bedienung, Top!
gut, wie füge ich einem Byte[] Ein Bit hinzu, wie stelle ich fest ob die Länge ein vielfaches von 512 ist (und füge bis es das ist nullen hinzu?) wie füge ich die bit-länge eines Strings diesem Byte[] hinzu, wie teile ich jedes 512bit teil des Byte[] in 32 bit little-endians auf?
Wie gesagt, Ansatz reicht, Ich möchte keinen vollen Code - Sonst wärs ja Sinnfrei für mich.
Am code. Vom Theoretischen verstehe ichs, aber an der Umsetzung haperts. Den Rest der Schleifen hab ich ja alles schon geschrieben, nur eben die Vorbereitung des Strings ist es.
@herbi: Ja, das wusste ich ja schon vorher.
Ich verstehe den Englischen Pseudo besser als den Deutschen. Ja, es ist mir klar das ich das auf ByteEbene machen muss - aber das ist eben mein Problem. Das Krieg ich nicht hin.
Also, Ich möchte den MD5 Alogrithmus in C# schreiben (Ja, ich weis das es dazu Klassen gibt, Ich möchte es einfach aus Fun machen)
//en.wikipedia.org/wiki/MD5 (Pseudocode)
//pre-processing:
append "1" bit to message
append "0" bits until message length in bits a 448 (mod 512)
append bit (bit, not byte) length of unpadded message as 64-bit little-endian integer to message//Process the message in successive 512-bit chunks:
for each 512-bit chunk of message
break chunk into sixteen 32-bit little-endian words w_, 0 d i d 15
Daran hänge ich zz. Ich habe mich nicht wirklich mit Bits beschäftigt, und habe auch nicht wirklich viel gefunden... Eventuell suche ich einfach falsch.
Wäre recht verbunden um ein paar Ansätze, es muss kein ganzer code sein (sonst hat es ja keinen Sinn es selbst zu machen 😉)
Fema
ups ups ich hab Mist erzählt, das was ich gepostet hab war für Post-Request.
Du brauchst ne WebHeaderCollection
List<KeyValuePair<string, string>> li_header = new List List<KeyValuePair<string, string>>();
WebHeaderCollection header = new WebHeaderCollection();
foreach (KeyValuePair<string, string> target in header)
{
header.Add(target.Key, target.Value);
}
//vereinfacht dargestellt - request ist ein HttpWebRequest
request.Headers = header;
das müsste es diesmal aber sein.
Über foreach die Liste durcharbeiten, und nen string draus machen, zb.
List<KeyValuePair<string, string>> li_header = new List List<KeyValuePair<string, string>>();
string header = "";
foreach (KeyValuePair<string, string> target in header)
{
header += target.Key + "=" + target.Value + ";";
}
Den entstandenen string kannste dann als Header benutzen.
Ich hoffe das ist richtig mit dem Code... Kanns grad net testen. Aber ungefähr solltest verstehen wies geht.