DrBong12 schrieb:
1. Kann man ( oder muss man das so machen ? ) das wen sich die leute im Messenger regestrieren die daten auf einer MySQL datenbank geschpeichert werden ?
Eine Datenbank bietet sich an (MySQL ist ok, gäbe noch alternativen). Auf jedenfall müssen diese Daten abgespeichert werden.
DrBong12 schrieb:
2. Geht das, das die nahrichten nur ûber die IP gesendet werden ?
Man muss auch einen Port angeben. (Die IP ist sozusagen den ganzen Häuserblock und der Port ist dann die Wohnung im 27. Stock.)
DrBong12 schrieb:
3. Wen ja brauch ich dan trotzdem einen server ?
Ja, die Daten müssen an einem zentralen Ort angefragt werden können.
(Ob die tatsächliche Architektur zentral ist, ist eine andere Frage, aber für die Clients muss es so aussehen, als gäbe nur ein Server.)
DrBong12 schrieb:
Und kônnte mir dan vieleicht jemand dabei helfen weil grosse programmier kenntnise habe ich nicht und wûrde das glaub ich nie alleine schafen also wen mir jemand helfen will dan sag ich jetzt schon mal danke.
Das wäre was fürs Projekte Unterforum.
Simon
Ich habe ein WPF-Window das ich für eine AppBar verwende.Während es in der AppBar ist setze ich den Fenstersill auf none und verkleinere es um die Grösse der Überschrift,wenn es oben oder unten angedockt wird.Wenn ich die AppBar entferne und das Fensterstill in Toolwindow zurückändere,versuche ich natürlich das Fenster wieder zu vergrössern,aber das klappt nicht.
Wenn ich im Debug durchgehen wird die Grösse geändert und wen der Funktionsaufruf beendet ist wieder zurückgesetzt.
Hat jemand eine Idee woran das liegen könnte?
ABEdge Edge
{
set
{
Size s = new Size(button1.Width + 10, 20);
if (Edge == ABEdge.ABE_NONE) AppBar_Functions.RegisterBar(this);//Registriert die Taskbar
if (value == ABEdge.ABE_NONE&&Edge != ABEdge.ABE_NONE)
{
AppBar_Functions.UnregisterBar(this);//Entfernt die Taskbar
if (Edge == ABEdge.ABE_BOTTOM || Edge == ABEdge.ABE_TOP)
{
Height = ActualHeight + SystemInformation.ToolWindowCaptionHeight;
Width = 480;
}
}
else
{
AppBar_Functions.BarSetPos(this, value, s);
}
c_edge = value;
}
get
{
return c_edge;
}
}
Alle genannten Varianten lassen sich mit ASP.NET umsetzen.
Aber zu deiner Frage; letztendlich ist es egal was du nimmst. Beim Gridview kann man natürlich mit einem Index arbeiten. Aber es ist halt umfangreicher als eine normale Tabelle. Ich würde vorschlagen, du guckst dir einfach mal beides an und entscheidest selbst.
Für die Umwandlung kannst Du BinaryWriter / BinaryReader verwenden.
http://msdn.microsoft.com/en-us/library/system.io.binarywriter_members.aspx
Als Stream dann z.B. MemoryStream.
Natürlich kannst Du das ganze dann in ein byte- Array umwandeln.
Simon
Ok die Syncronisation ist natürlich wichtig beim Thread. Würde ich aber meiner Klasse nen Timer verpassen, und darin in der OnTimer Funktion was mit den klassenmembern anstellen, muss ja erst diese funktion Fertig sein, bevor eine andere Funktion der Klasse ausgeführt werden kann welche die member verändert, seh ich das richtig?
C#Noob schrieb:
ja hab ich schon gefunden, allerding kann ich da den key nicht mehr nachträglich ändern.
Hmm, das ist doch auch eigentlich gut. Wenn Du den Schlüssel ändern willst, erstell doch einfach ein neues `KeyValuePair`, das ist eine ziemlich billige Operation.
Alternativ musst Du Dir eine eigene `Pair`-Klasse schreiben. Besser noch wäre eine (überladene) `Tuple`-Klasse.
C#Noob schrieb:
ja ist ne dictonary;) ja die lösung mit maskieren und danach löschen hab ich mir auch überlegt, aber das wären ja dann zwei schleifen.
Na ja, es ist aber trotzdem relativ effizient, da würde ich mir also keine zu großen Sorgen machen, und es ist auch nicht viel Code:
var del = new List<Guid>();
foreach(var kvp in m_ClientSessions)
if (shallDelete(kvp))
del.Add(kvp.Key);
del.ForEach(m_ClientSessions.Remove);
Um aus einer Liste zu löschen gibt's übrigens die Methode `RemoveAll`, weil der obige Ansatz dort wesentlich ineffizienter wäre.
Nur vorweg. Bis auf die Unterschiede in SQL-Querys macht es keine Unterschied ob MySQL oder MSSQL wenn man den Connector von MySQL verwendet.
Man kann sich sogar einen Wrapper dazu schreiben und austauschen.
Die Logincontrols (Passwort änderen, vergessen, etc.) haben den Vorteil mit MSSQL das man dafür fast keinen Code braucht.
O.o schrieb:
Dr.Dre schrieb:
Hmm wo müssen die DLL Import Codes den hin?
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx
Dr.Dre schrieb:
Gibts irgendow ne Anleitung zum memhackinhg mit C#?
http://www.gidf.de
Ich weiss das man sowas mit Google suchen kann, nur habe ich nichts für mich brauchbares gefunden.
Hallo,
NES-Spieler schrieb:
Mit StreamReader liest man ja von Anfang bis Ende einer Datei. Gibt es auch eine Möglichkeit, auf selbst ausgewählte Bytes zuzugreifen? Also, daß ich z.B. erst ab Byte 5494 anfange zu lesen, ohne daß er sich erst durch die vorherigen Bytes durchkämpft, sondern direkt auf das Byte, das ich brauche, zugreift?
Und dann müßte ich noch wissen, wie ich rausfinden kann, an welcher Position (also an dem wievielten Byte) einer Datei sich der StreamReader im Moment befindet. Wie mach ich das?
Ein StreamReader wurde nicht dafür konzipiert, wahlfreien Zugriff zu ermöglichen, wohl aber ein FileStream (hat Seek-Methode):
http://msdn.microsoft.com/en-us/library/system.io.filestream.aspx
MfG,
Probe-Nutzer
Design-Fanatic schrieb:
Ok verstehe... das mit der Binärkompatibilität leuchtet mir ein!
Aber ist es eigentlich nicht unsauber mit
public Ferrarifahrer Autofahrer { get { return (Ferrarifahrer)base.Autofahrer; } }
mit dem Property "von außen" auf die Vaterklasse zuzugreifen, obwohl ich ja eigentlich schon "im" Objekt bin und die Objektvariable erben könnte?!
Ne, das ist nicht unsauber. Eher im Gegenteil …
Nee das wars auch nicht.
Es war die Nachrichtenzuordnung falsch. Richtig muss es lauten
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(DownlodComplete);
Trotzdem danke
loks schrieb:
http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx
[MSDN]
Semaphores are of two types: local semaphores and named system semaphores. If you create a Semaphore object using a constructor that accepts a name, it is associated with an operating-system semaphore of that name. Named system semaphores are visible throughout the operating system, and can be used to synchronize the activities of processes. You can create multiple Semaphore objects that represent the same named system semaphore, and you can use the OpenExisting method to open an existing named system semaphore.
[/MSDN]
Was willst Du damit sagen?
Simon