Laden...
S
Sweet myCSharp.de - Member
Graz/Österreich Dabei seit 01.01.2008 119 Beiträge
Benutzerbeschreibung

Forenbeiträge von Sweet Ingesamt 119 Beiträge

18.10.2008 - 17:40 Uhr

Hi

Wenn eine Eigenschaft schreibgeschützt ist kannst du ihr keinen Wert zuweisen sondern den Wert nur auslesen.

Wenn du die Position einer PictureBox verändern willst nimm einfach die Eigenschaft Location:



 pictureBox.Location = new Point(X, Y);


mfg
Sweet

25.09.2008 - 12:50 Uhr

Hi

Eigentlich sollte es funktionieren. Bist du dir sicher das du alles richtig kopiert hast? Oder das du nicht aus versehen den Code meiner Lib verändert hast? Kommen irgendwelche Exceptions, oder funktioniert es einfach nur nicht? Du weißt schon das das NewClient Event nicht ausgelöst wird, wenn man zu sich selbst connectet? Versuch mal zu debuggen. Vielleicht findest du so heraus was der Fehler ist.

mfg
Sweet

14.09.2008 - 20:51 Uhr

Hi


timer.Tick += new EventHandler(Timer_Tick);

Das ist schon vollkommen richtig. Der Fehler ist das die Methode Timer_Tick nicht mit dem Delegate EventHandler übereinstimmt, oder auf deutsch:


void Timer_Tick(object sender, EventArgs e)
{

}

So muss die Methode aussehen

mfg
Sweet

/EDIT
Kleiner Tipp:

Wenn du ein Event abonnieren willst, z.B. beim Timer das Tick Event, dann schreib einfach:


timer.Tick+=

Dann drückst du 2 mal Tab und VS erstellt dir die Methode. Dann sollten solche Fehler wie deiner eben nicht mehr vorkommen ;D

01.09.2008 - 04:06 Uhr

Hi

Normalerweise sollte eine Exception kommen wenn keine Verbindung hergestellt werden kann. Debugg es einmal und schau wo genau er stehen bleibt.

mfg
Sweet

29.08.2008 - 13:30 Uhr

Hi

Es ist zwar eher ein kleiner Workaround aber du kannst dir ja mal das anschauen:
Drucken eines Controls????

mfg
Sweet

29.08.2008 - 08:27 Uhr

Hi

Ohne Code oder genauere Beschreibung werden wir dir nicht sagen können wo dein Fehler liegt.

Mit dem folgenden Code kannst aber einfach die Seite anpingen um zu schauen ob sie online ist:


using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
namespace PingClass
{
/// <summary>
/// Das folgende Programm pingt einen gegebenen Host an, indem es
/// die Klasse Ping aus dem Namensraum System.Net.NetworkInformation
/// verwendet. Das Beispiel stammt aus der MSDN Library -
/// ©2006 Microsoft Corporation.
/// </summary>
public class PingClass
{
// Das Argument args[0] kann eine IPaddress ode ein Host-Name sein.
public static void Main(string[] args)
{
if (args.Length < 1)
{
throw new ArgumentException("Parameters: [<Uri>]";);
}
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
// Benutze den Standard TTL Wert (Time To Live) der bei 128ms liegt,
// aber ändere das Fragmentationsverhalten. options.DontFragment = true;
// Erzeuge einen Puffer mit der Länge von 32 Bytes
// die versendet werden sollen.
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send(args[0], timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine("Address: {0}", reply.Address.ToString());
Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);
Console.WriteLine("Time to live: {0}", reply.Options.Ttl);
Console.WriteLine("Don't fragment: {0}", reply.Options.DontFragment);
Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);
}
}
}
}


mfg
Sweet

28.08.2008 - 12:06 Uhr

Hi

Ich weiß das das alle Möglichkeiten zurückgibt aber du brauchst es ja nur ein bisschen modifizieren damit die Möglichkeiten nicht mehr reihenfolgenabhängig sind, dazu brauchst wahrscheinlich nur ein if mehr.

mfg
Sweet

28.08.2008 - 10:48 Uhr

Hi

Schau dir zu dem Thema mal das an:
[Snippet] Alle Kombinationen von n Elementen (rekursiv)

mfg Sweet

28.08.2008 - 09:01 Uhr

Hi

Du musst die Eigenschaft Key Preview auf true setzen, damit das Event auch ausgelöst wird wenn andere Controls den Fokus haben. Das sollte dein Problem lösen.

mfg
Sweet

27.08.2008 - 15:09 Uhr

Hi

Du kannst dir ja mal anschauen wie das andere SVN Clienten machen. TortoiseSVN ist zum Beispiel Open Source.

Was ist denn der Sinn von sowas? Wieso könt ihr nicht einfach einen normalen svn clienten verwenden?

mfg
Sweet

27.08.2008 - 14:31 Uhr

Hi

Ganz gleich wie bei jedem anderen Control auch.



RichTextBox rtb = this.tab_editor.SelectedTab.Controls[0] as RichTextBox;
rtb.TextChanged += new EventHandler(....);


[Hinweis] Wie poste ich richtig? Punkt 1.1.1
Das sind Grundlagen. Bitte zeig das nächste mal ein bisschen Eigeninitiative und brings dir selbst bei.

mfg
Sweet

/EDIT

Aber wenn du das so machst ist das eher schlechtes Design. Wenn du ein Control dynamisch erstellst dann kannst du ja gleich bei dessen Erstellung das Event registrieren dann ersparst du dir diesen performancelastigen Zugriff.


TabPage _page = new TabPage();
_page.TextChanged += new EventHandler(_page_TextChanged);
tabControl.Controls.Add(_page);

27.08.2008 - 13:57 Uhr

Hi

Deinen Code hab ich nicht so genau durchgeschaut, aber auf die Schnelle hab ich keinen Fehler gefunden. Schau mal ob die Events ausgelöst werden, speziell das Paint Event. Wenn das Paint Event nicht ausgelöst wird probier mal mit Invalidate() ein neu zeichnen selbst auszulösen.

mfg
Sweet

27.08.2008 - 13:52 Uhr

Hi

In programmiertechnischer Hinsicht kenne ich keine Lösung aber du kannst den Bildschirmschoner über die Registry ein und ausschalten:

[HKEY_CURRENT_USER\Control Panel\Desktop]
"ScreenSaveActive"="1|0"

mfg
Sweet

27.08.2008 - 13:38 Uhr

@frisch
Es geht besser als man es glauben mag. Ich hab mal mit VM Ware Workstation XP mit 24 MB Ram und 300 MHz gebootet und man hat keinen Unterschied zu 2 GB und Dual Core festgestellt (Zumindest so lange man keine Programme startet 😉 Firefox zu startet hat auf so nem schwachen Rechner ungefähr 1 - 2 Minute gedauert)

27.08.2008 - 11:16 Uhr

Hi

Viel präziser kann man es nicht sagen. Das String[] enthält die Argumente. Kannsts ja mal ausprobieren. Starte dein Programm über die Konsole mit irgendeinem Startargument und schau was in dem String[] drin ist.

mfg
Sweet

27.08.2008 - 11:08 Uhr

Hi



public class Form1 : Form
{
private Progressbar _bar;
public Form1()
{
//ProgressBar
_bar = new Progressbar();
this.Controls.Add(_bar);
_bar.Location = new Point(5, 5);

//Timer
Timer _timer = new Timer();
_timer.Interval = 500;
_timer.Start();

//Tick Event registrieren. Wird wie bei Interval eingestellt alle 500 ms ausgelöst
_timer.Tick += new EventHandler(timer_Tick);
}

void timer_Tick(object sender, EventArgs e)
{
_bar.Value += 5;
if(_bar.Value == 100) _bar.Value = 0;
}
}

mfg
Sweet

27.08.2008 - 10:15 Uhr

Hi

Ich hab das beim ersten mal Lesen einfach übersehen, bin viel zu müde 😉 Naja vorheriger Post ist schon passend editiert.

mfg
Sweet

27.08.2008 - 10:10 Uhr

Hi

Die Formatierung geht normalerweise auch automatisch, man kann das aber abschalten und wahrscheinlich hast du das aus Versehen gemacht. Schau mal die Einstellungsmöglichkeit unter Extras -> Optionen -> Text-Editor -> C# durch. Da du automatisches Formatieren schon ein hast, vermute ich das du Intellisense allgemein aus hast.

mfg
Sweet

27.08.2008 - 10:03 Uhr

Zeichnet man alles selber, sollte man besser ein Panel nehmen.

Tja, man lernt nie aus 😉

27.08.2008 - 07:57 Uhr

Hi

Den Code hab ich irgendwo verschmissen deswegen poste ich hier einfach einen schematischen Code, ist aber nicht getestet und ohne Intellisense geschrieben es könnte also Schreibfehler vorkommen:



public class MoveablePictureBox : PictureBox
{
private const Rectangle _DragRect = new Rectangle(0, 0, this.Width, 30);
private Control _TopControl;
private Control _OldControl;
private int _OldMouseX;
private int _OldMouseY;
private Point _OldLocation;
private bool Draged;

public MoveablePictureBox(Control _TopControl)
{
this._TopControl = _TopControl
this.MouseDown += new MouseEventHandler(this_MouseDown);
this.MouseMove += new MouseEventHandler(this_MouseMove);
this.MouseUp += new MouseEventHandler(this_MouseUp);
}

void this_MouseDown(object sender, MouseEventArgs e)
{
_OldMouseX = e.X;
_OldMouseY = e.Y;
if(_DragRect.contains(new Point(_OldMouseX, _OldMouseY))
{
_OldLocation = this.Location;
this.Parent = _TopControl;
Draged = true;
}
}

void this_MouseMove(object sender, MouseEventArgs e)
{
if(Draged)
{
int _NewMouseX = e.X;
int _NewMouseY = e.Y;

int _DifX = _NewMouseX - _OldMouseX;
int _DifY = _NewMouseY - _OldMouseY;

_OldMouseX = _NewMouseX;
_OldMouseY = _NewMouseY;

this.Location = new Point(this.Location.X + _DifX, this.Location.Y + _DifY); }
}

void this_MouseUp(object sender, MouseEventArgs e)
{
if(Draged)
{
GetNextParentControl();
Draged = false;
if(this.Parent == _TopControl)
{
this.Parent = _OldControl;
this.Location = _OldLocation;
}
}
}

private void GetNextParentControl()
{
foreach(Control c in _TopControl)
{
if(c.Rectangle.Contains(this.Rectange))
{
this.Parent = c;
break;
}
}
}
}

Die PictureBox kann jetzt zwischen mehreren Controls hin und hergezogen werden. Der Parent ändert sich automatisch. Wenn du jetzt das realisieren willst das die anderen Controls ausweichen, dann musst du einfach im ControlAdded Event schauen an welcher Stelle sich das neue Control befindet Dann mit einer Schleife durch alle Controls und je näher das Control dem neuen ist desto weiter verschiebst du es. Ein bisschen Mathe ist immer dabei 😉

/EDIT: Der Code ist zwar nicht perfekt (zum Beispiel muss die MoveablePictureBox komplett in ein anderes Control gezogen werden damit es funktioniert), aber ich glaube es zeigt auf worum es geht. Und wenn man hinzufügen will das die MoveablePictureBox nur 3/4 oder 1/2 in nem anderen Control sein muss damit es geht, dann muss man die GetNextParentControl() Methode nur um ein Rectangle Intersect erweitern.

27.08.2008 - 07:20 Uhr

Hier

Im OnPaint Event zeichnest du einfach das Raster. Im MouseDown Event errechnest du dir in welchem Rasterelement geclickt wurde und übertragst das ausgewählte Quadrat in eine Picturebox. Hier hast einen Link zu dem Thema:
[Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox)

mfg
Sweet

PS: PictureBox und Panel sindim Kern ja die gleichen Controls, der Unterschied ist das die Picturebox durch bestimmte Funktionen und Eigenschaften, wie z.B. DoubleBuffered (um das Flackern zu vermeiden) darauf getrimmt wurde Bilder anzuzeigen. Bei grafischen Sachen wie du sie beschreibst sollte man also immer eine PictureBox nehmen.

Das ist mein 100. Post 😁

26.08.2008 - 16:36 Uhr

Hi

Mit der Bass.dll sollte es gehen (glaub ich zumindest), denn mit Bass kann man auch Graphen machen die die Amplitude und Frequenz visualisieren. Wenn Bass nichts in diese Richtung bietet musst du selbst ran 😉 Soll heißen File als byte[] einlesen und selbst Amplitudengröße auslesen. Wenn du es so machst kannst du dich ja im Internet ein bisschen informieren wie das ganze z.B. bei mp3 im File gespeichert wird.

mfg
Sweet

26.08.2008 - 16:29 Uhr

Hi

Wenn du Controlls auf nem Form verschieben willst, brauchst du Gott sei dank keine API 😉 . So wie ich es gesagt habe ist es am einfachsten.

mfg
Sweet

26.08.2008 - 14:54 Uhr

Hi

Ich dafür ne fertige Implementierung irgendwo rumliegen ich poste sie später.

Im Kern geht es darum:

Am besten funktioniert es wenn die Controls die ganze Arbeit übernehmen wegen Drag und Drop und so. Leite also eine Klasse von dem jeweiligen Control ab und registriere die Events MouseUp, MouseDown und MouseMove. Wenn jetzt die Maus gedrückt ist rechnest du dir im Mouse Move Event die Differenz zwischen alter Maus Position und neuer aus und verschiebst das Control um diesen Betrag.

mfg
Sweet

26.08.2008 - 14:48 Uhr

Hi

Zeig mal den Methodenrumpf her ich glaube du hast den falschen Rückgabetyp.

mfg
Sweet

26.08.2008 - 14:37 Uhr

Hi

Das hatten wir zwar schon mal aber:

Zurückübersetzen oder Decompilen ist nur schwer oder garnicht möglich. Bei .NET Bibliotheken ist es aber schon leichter möglich (Stichwort Reflector) Du kannst aber auch mit Einem Assembler DLLs oder EXEs Disassemblen und so einsehen (So werden z.B. Cracks gemacht). Wenn du deinen Code schützen willst such mal im Forum oder auf google nach "Obfuscator". Da solltest du genug finden

mfg
Sweet

26.08.2008 - 14:23 Uhr

Naja im Vergleich zu euch allen bin ich noch jung 😉 Ich wurde ja erst 1992 geboren. In der 2ten Klasse Volksschule also so ungefähr 1999 hat unsere Klasse einen PC bekommen. Ich und meine Freunde waren damals total fixiert auf das Teil, und haben in den Pausen immer Need for Speed 2 SE drauf gespielt.

1 Jahr später hatte ich meine Eltern dazu überredet einen PC zu kaufen. Er hatte 1GHz 256 MB Ram und 40 GB Festplatte (den verwendet meine Mutter heute noch immer) und er steht bei uns im Arbeitszimmer. Dort hab ich dann erste Programmier Erfahrung gesammelt, falls man das überhaupt so nennen konnte, denn damals war ich noch viel zu klein um sowas wirklich zu verstehen. Es war mehr ein erweitertes Trial and Error mit echtem Spaßfaktor.

Ich hab mich dann ein bisschen mit HTML beschäftigt und mit 12 ungefähr als ich angefangen hab Counter Strike Source zu spielen ist mir die Script Sprache Eventscripts aufgefallen mit der man Addons für CSS Schreiben konnte.

Von da an hab ich 90% meiner Freizeit Programmier und Scriptsprachen gewidmet bis heute. Der einzige Unterschied zu damals ist das ich jetzt schon fast 10 Programmier und Scriptsprachen kann und nicht mehr mit Eventscripts Scripts schreibe sondern mit C++ SourceMods (So nennt man Spiele auf Basis der Source Engine die zum Beispiel von Halflife 2 genutzt wird)

Und heute hab ich:
Intel Core 2 6600
Geforce 7900 GTX
2GB Ram
640 GB intern
1 TB extern
Und ne 250GB externe auf die ich Ubuntu installiert habe. Das ist meine portable Code-Fabrik 8)

26.08.2008 - 13:45 Uhr

Ich höre alles was rockt 😉

Eben ein paar Klassiker wie Nirvana oder vor allem Metallica aber auch Slipknot und Slayer 😁

26.08.2008 - 13:35 Uhr

Hi

Dein Code stimmt perfekt. Eine eigene Klasse gibts dafür schon aber normalerweise wird das so erledigt wie du das gemacht hast. Wieso macht du aber ne Konsolen Anwendung? Ich denke das für so einen Zweck wie du das beschreibst eher eine Tray Anwendung geeignet ist. Das lässt sich einfach realisieren, und bietet (zumindest von Grund auf) viel mehr Möglichkeiten wenn du das Programm mal erweitern willst. Außerdem blockiert es nicht einen Platz in der Taskbar so wie es die Konsolen Anwendung macht.

Hier 2 Links zum Thema Tray App:
[Artikel] Windows Tray Applikationen (NotifyIcon)
Vorlage für Tray-/NotifyIcon-Anwendung

mfg
Sweet

26.08.2008 - 13:12 Uhr

Hi

Replay Gain (aus dem Englischen: Wiedergabe-Verstärkung) ist ein Standard, der beschreibt, wie digitale
>
auf eine gemeinsame wahrgenommene
>
angehoben werden, ohne die in der Datei gespeicherten eigentlichen Audiodaten anzutasten.

Trotzdem kannst du nie programmatisch bestimmen wie laut sich das Soundfile wirklich aus deinen Boxen anhört. Das ist unmöglich. Replay Gain ist kurz gesagt nur ein Standard mit dem man die Lautstärke verändert ohne das das Sound File beeinflusst wird. Aber es geht darum festzustellen wie laut ein es ist und nicht die Lautstärke anzupassen.

mfg
Sweet

26.08.2008 - 12:57 Uhr

ja aber eine relative maximale audioeinstellung,...

Alles ist relativ 😉 Deswegen wiegen die Elefanten seit neuestens auch 200g.

Tatsache ist das man programmatisch nie festellen kann wie laut der Sound wirklich ist der aus den Boxen kommt. Du kannst zwar sagen die Musik ist 1.2 mal lauter als diese aber mehr geht nicht. Wirklich messen könntest es nur mit Mikro, aber auch dann wärs noch ziemlich schwer...

26.08.2008 - 12:19 Uhr

Hi

Wie bzw. Was versendet ihr?
So wie der Code oben auschaut, glaub ich nicht das der Fehler beim Empfangen liegt.

mfg
Sweet

26.08.2008 - 11:56 Uhr

Hi

Die maximale Lautstärke in db wirst du so nie feststellen können, denn das hängt davon ab wie der Computer der es abspielt eingestellt ist. Soll heißen wenn du ne billige Sigmatel Onboard Soundkarte hast ist alles sicher ein bisschen leiser als wenn du ne Creative X-Fi Soundkarte hast 😉 (Seitdem ich die Creative Karte und mein Medusa Headset hab sind die Lautstärke Regler nur noch auf 5% weils mir sonst die Ohren wegbläst xD) Außerdem kann der Benutzer des PCs ja auch an den Lautstärkeregler an den Boxen rumspielen und diese Einstellung hat (im Normalfall) nichts mit irgendeiner Software oder dem Betriebssystem zu tun, lässt sich also auch nicht messen. Was du aber festellen kannst ist ob ein Soundfile leiser als ein anderes ist. Wenn die Amplitude größer ist dann ist der Ton auch lauter, soweit ich weiß kann man die Amplitudengröße mit der Bass.dll auslesen.

mfg
Sweet

25.08.2008 - 13:52 Uhr

Hi

Weltweit gibt es ungefähr 2,9 Milliarden PCs. Wenn davon nur 40% gleichzeitig online sind (also durchaus realistisch) und ein Hacker 100.000 PCs versucht zu hacken (was allerdings mit einem normalen PC nicht möglich ist. 10000 ist viel realistischer) dann ist die Chance das dein PC dabei ist 0,00008621% oder 1/11600.

mfg
Sweet

25.08.2008 - 13:28 Uhr

Hi

Das hab ich jetzt seit ungefähr 2 Jahren so und bis jetzt hab ich noch nichts davon mitbekommen das irgendein Hacker versucht hat meine Daten auszulesen.

Den Satz habt ihr vielleicht zu wörtlich genommen, obwohl ich zugeben muss das er "etwas" naiv klingt. Aber auch wenn ihr es zur Zeit nicht glaubst ich weiß sehr wohl wovon ich rede und ich bin mir bewusst welche Risiken meine Einstellungen birgt, aber der springende Punkt ist das die Chance das ein Hacker unter den Milliarden PCs die es gibt genau auf meinen versucht zuzugreifen ist verschwindend gering. Außerdem könnt ihr den Satz "Ich hab nichts zu verbergen" dafür um so mehr wörtlich nehmen. Mir ist egal wer auf meine Festplatte zugreift alle Daten sind zu 100% ersetzbar und zu 99% vollkommen unwichtig, und bei den restlichen 1% würde das neu runterladen nerven 😉

Naja ich weiß das das ziemlich "abnormal" ist das man vollkommen ohne Schutz im Internet surft, aber es ist eine Tatsache das ich seit 1 Jahr keinen Virus mehr hatte und das niemand auf meinen PC zugegriffen hat ( Ich überwache alle Aktivitäten im lokalen Netzwerk ).

Und nur um hier was klar zu stellen: Mein Webserver und Gameserver (der bei meinem Freund steht weil mein Internet zu schlecht ist xD) hat Sicherheitsvorkerungen wie Firewall und so denn ich bin mir sehr wohl im klaren darüber das man bei bestimmten Dingen einen Schutz braucht. Ich wollte mit meinem Ersten Post nur zum Ausdruck bringen das ich persönhlich so einen Schutz nicht benötige.

mfg
Sweet

25.08.2008 - 11:13 Uhr

Hi

In dem Fall denke ich das du einfach nur ne kurze Pause z.B.


System.Threading.Thread.Sleep(10);

einbauen musst. Dann sollte es auch lokal gehen.

mfg
Sweet

/EDIT Ich hab grad gesehn das hast du schon. X( Sry hab den Code nur überflogen 😉

25.08.2008 - 10:21 Uhr

@herbivore

das ist nicht besonders sozial. Denn wenn dein PC gehackt wird, leiden alle. SPAM wird ganz überwiegend über gehackte PCs (Stichwort: Bot-Netze) verschickt.

Wirklich gutes Argument 😉

@Xynratron
Ich verstehe worauf du hinaus willst aber es ist eher fraglich was man mit bestimmten Wissen über Leute, egal ob sensibel oder nicht, anfangen kann. Egal wie viel jemand anders über dich weiß. Wenn er daraus Gewinn schlagen will muss es nicht mal wahr sein (Bestes Beispiel Horoskop oder der gute alte monatlich eintreffende Brief der versucht dir weiß zu machen das du ein Auto gewonnen hast)

@all

Mir geht es vor allem darum, dass die aktuelle Situation hinsichtlich Datenschutz bei weitem nicht so schlimm ist, wie die meisten glauben. Meine Mutter hat mich z.B. mal gefragt wie sie eine E-Mail verschlüsseln kann. Wie sich herausstellte wollte sie nur Geburtsagswünsche an eine alte Freundin von ihr verschicken, als ich sie dann fragte wieso sie Geburtstagswünsche verschlüsselt verschicken will, sagte sie sie hätte im Fernsehen eine Bericht über Datenschutz gesehen und hat jetzt Angst das irgendjemand mit der E-Mail an ihre Passwörter kommt 😉

Lange Rede kurzer Sinn: Das ganze ist meiner Meinung nach (zumindest hauptsächlich) nur eine Mischung aus Unwissenheit und Paranoia. Sicher es kommt schon vor das bestimmte Leute sensible Daten auslesen um zum Besipiel Gewinn darauszuschlagen aber das sowas bei über 2 Milliarden PCs weltweit relativ häufig vorkommt ist klar. Immerhin müsstest du auch mit 500 verschiedenen Personen Sex haben um relativ sicher zu sein das du mit HIV infiziert bist (zumindest nach österreichischer Statistik) 😉

25.08.2008 - 09:28 Uhr

Hi

Also mir persönlich ist es vollkommen egal ob jemand meine E-Mails scannt oder durchliest. Mag sein das das daran liegt das ich allgemein nicht viel von Datenschutz halte 😉 Besonders offensichtlich ist das wenn man sich die Sicherheitsvorkerungen an meinem PC anschaut. Jeder x-beliebige Hacker könnte sich in meinen PC hacken, denn ich habe keine Firewall weder bei Router noch am PC und beim Router sind alle Ports geforwarded. Das hab ich jetzt seit ungefähr 2 Jahren so und bis jetzt hab ich noch nichts davon mitbekommen das irgendein Hacker versucht hat meine Daten auszulesen. Und auch wenn, wärs mir egal. Ich hab nichts zu verbergen.

Trotzdem verstehe ich das andere Leute, besonders wenn sie auch von Berufswegen aus mit sensiblen Daten zu tun haben, sich besonders um Datenschutz bemühen, allerdings halte ich das ganze eher für "Gruppenparanoia" als Realität.

mfg
Sweet

23.08.2008 - 23:34 Uhr

Hi

Ich hab hier mal eine Klasse geschrieben um das Zusammensetzten und das Bearbeiten von Byte[] zu vereinfachen. Im Kern hat die Klasse die gleichen Funktionen wie die Stringbuilder Klasse, nur sie bearbeitet eben Byte[].

Hier mal ein Beispiel mit allen Kommandos. Ich füg später vielleicht ein paar mehr hinzu.


//Hier ein paar einfach Byte[] für das Beispiel
Byte[] _byte1 = System.Text.Encoding.ASCII.GetBytes("http://www.myCSharp.de/wbb2";);
Byte[] _byte2 = System.Text.Encoding.ASCII.GetBytes("asdf asdf asdf jklö jklö jklö";);
Byte[] _byte3 = System.Text.Encoding.ASCII.GetBytes("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa";);
Byte[] _byte4 = System.Text.Encoding.ASCII.GetBytes("bbbbbbbbbbbbbbbbbbbbbbbbbbbbb";);

//Wir lassen hier eine Stopwatch mitlaufen um die Performance der Klasse zu messen.
Stopwatch _watch = new Stopwatch();
_watch.Start();

//Man kann auch hier gleich ein Byte[] zur Bearbeitung übergeben das geht aber auch
//über die Eigenschaft ByteBuilder.Byte
ByteBuilder _builder = new ByteBuilder();
//ByteBuilder _builder = new ByteBuilder(new Byte[0]);

//Hier wird eingestellt mit welchen Bytes das fertige Array gefüllt werden soll wenn
//es nötig ist Lücken zu füllen (Standardwert = 0). 32 steht für Leerzeichen. Das
//aktuelle Beispiel würde nicht funktionieren wenn wir den Wert nicht ändern würden,
//da beim Konvertieren in einen string ein Byte mit dem Wert 0 als das Ende vom String
//interpretiert würden werde
_builder.FillType = 32;

//Fügt ein Byte[] an das Ende des fertigen Byte[], das in diesem Fall aber noch leer ist weil
//die ByteBuilder Instanz gerade erst instanziert wurde.
_builder.Append(_byte1);

//An die Position mit dem Index 50 wird das Byte[] _byte2 eingefügt
//_byte1 ist aber nur 27 Zeichen lang, da wir aber das _byte2 an der Position 50
//einfügen wird die Lücke mit Bytes vom Typ 32 aufgefüllt, was wir ja oben
// mit der Eigenschaft FillType eingestellt haben.
_builder.Insert(50, _byte2);

//Über die Eigenschaft ByteBuilder.Byte kommen wir an das fertige Array
//Man kann hier auch ein Array zur Bearbeitung übergeben
Byte[] _Final = _builder.Byte;

//Mit dieser Methode kann man einen bestimmten Bereich aus dem fertigen Byte[]
//herausfiltern. Diese Methode hat aber als einziges keine Einfluss auf das
//fertige Byte[]
Byte[] _Part = _builder.GetSubByte(11, 8);

//Fügt die beiden Byte[] wieder an das Ende des fertigen Byte[] an
_builder.Append(_byte3);
_builder.Append(_byte4);

//Entfernt alles vom Index 0 bis 11 im fertigen Byte[]
_builder.Remove(0, 11);

//Und hier alles vom Index 8 bis zum Ende des Byte[]
_builder.Remove(8);

//Ich habe die ToString() Methode überschrieben. Mit dieser Methode kannst du jetzt
//das fertige Byte[] in einen String konvertieren.
string abc = _builder.ToString();

//Hier geben wir dann den eben konvertierten string aus mit der Zeit die die Klasse für
//das alles gebraucht hat.
MessageBox.Show("Vergangene Zeit: " + _watch.ElapsedMilliseconds + "\n\nString: " + abc);

Und hier der Source von der Klasse:


public class ByteBuilder : IDisposable
{
public Byte[] Byte { get; set; }
public int FillType { get; set; }
public long Lenght
{
get { return this.Byte.LongLength; }
}

public ByteBuilder(Byte[] Data)
{
this.Byte = Data;
this.FillType = 0;
}

public ByteBuilder()
{
this.Byte = new Byte[0];
this.FillType = 0;
}

public void Append(Byte[] ToAppend)
{
Insert(this.Byte.LongLength, ToAppend);
}

public void Insert(long index, Byte[] ToInsert)
{
//Sollte der Index außerhalb vom fertigen Byte[] sein müssen wir "die Lücke füllen"
if (index > this.Lenght) Insert(this.Lenght, GetByteFromFillType(index - this.Lenght));
Byte[] Front = new Byte[index];
Byte[] End = new Byte[this.Lenght - index];
Array.Copy(this.Byte, 0, Front, 0, index);
Array.Copy(this.Byte, 0, End, 0, this.Lenght - index);
this.Byte = new Byte[this.Lenght + ToInsert.LongLength];
Array.Copy(Front, 0, this.Byte, 0, Front.LongLength);
Array.Copy(ToInsert, 0, this.Byte, Front.LongLength, ToInsert.LongLength);
Array.Copy(End, 0, this.Byte, Front.LongLength + ToInsert.LongLength, End.LongLength);
}

public Byte[] GetByteFromFillType(long Lenght)
{
int _fillType = this.FillType;
if (_fillType != 0)
{
Byte[] _final = new Byte[Lenght];
for (long l = 0; l < Lenght; l++) _final[l] = ((Byte)this.FillType);
return _final;
}
return new Byte[Lenght];
}

public void Remove(long start)
{
long lenght = this.Lenght - start;
Byte[] Front = new Byte[start];
Byte[] End = new Byte[this.Lenght - start - lenght];
Array.Copy(this.Byte, 0, Front, 0, start);
Array.Copy(this.Byte, start + lenght, End, 0, this.Lenght - start - lenght);
this.Byte = new Byte[this.Lenght - lenght];
Array.Copy(Front, this.Byte, Front.LongLength);
Array.Copy(End, 0, this.Byte, Front.LongLength, End.LongLength);
}
public void Remove(long start, long lenght)
{
Byte[] Front = new Byte[start];
Byte[] End = new Byte[this.Lenght - start - lenght];
Array.Copy(this.Byte, 0, Front, 0, start);
Array.Copy(this.Byte, start + lenght, End, 0, this.Lenght - start - lenght);
this.Byte = new Byte[this.Lenght - lenght];
Array.Copy(Front, this.Byte, Front.LongLength);
Array.Copy(End, 0, this.Byte, Front.LongLength, End.LongLength);
}
public Byte[] GetSubByte(long start)
{
return GetSubByte(0, start);
}
public Byte[] GetSubByte(long start, long lenght)
{

if (this.Byte == null) this.Byte = new Byte[0];
Byte[] New = new Byte[lenght];
Array.Copy(this.Byte, start, New, 0, lenght);
return New;
}
public override string ToString()
{
return System.Text.Encoding.ASCII.GetString(this.Byte);
}
public void Dispose()
{
this.Byte = null;
}
}

Ok und hier nochmal der Source mit dem BeispielCode als Download:

Schlagwörter: Byte Builder

21.08.2008 - 15:21 Uhr

Hi

Es gibt Eigenschaften um die Maximier- und Minimier Buttons auszuschalten aber bei dem Exit Button geht das glaub ich nicht. Deswegen würde ich die einfach alle 3 Buttons mit der Eigenschaft


Form.ControlBox = false;

deaktivieren und die 2 die noch da bleiben sollen selbst neu zeichnen.

Zu dem Thema kannst dir mal folgenden Thread anschauen:

[Artikel] Custom Window Border für Form's

mfg
Sweet

19.08.2008 - 14:43 Uhr

Hi

Ich würde sagen das er hier in ne Endosschleife geht:


while ((bytesRcvd = clientSocket.Receive(rcvBuffer, 0, rcvBuffer.Length, SocketFlags.None)) > 0)
{
totalBytesRcvd += bytesRcvd;
output += Encoding.ASCII.GetString(rcvBuffer);
}

Debugge es mal. Dann kannst du genau sagen was dein Code macht.

mfg
Sweet

14.08.2008 - 08:40 Uhr

Der Thread ist zwar schon etwas älter aber ich muss heir auch meinen Senf dazugeben 😉

Also ich persönlich finde man sollte sich derzeit auf jeden Fall einen Quad zulegen, obwohl derzeit kaum Programme Quads unterstützen. Wenn man sich einen PC kauft sollte man nicht auf altbewährte Technelogien wie z.B. die betagten Dual Cores setzen weil diese schon ein paar Monate nach dem Kauf komplett veraltet und im Vergleich zu den neuen Bauteilen völlig nutzlos wären. Meinen PC hab ich jetzt fast schon 2 Jahre und ich kann alle Spiele die bis jetzt erschienen sind auf höchst möglichen Details spielen. Auch Crysis, aber das hat mich erlich gesagt selbst überrascht, denn mein PC war schon über 1 Jahr alt als ich mir Crysis geholt hab. Hätte ich mir damals keinen Dual Core gekauft (oder inzwischen Vista installiert) wäre so eine beeindruckende Leistung unmöglich gewesen, und nur so ein interresantes Detail nebenbei: Als ich mir meinen PC gekauft habe sagten alle ich solle mir keinen Dual Core kaufen, weil das derzeit noch von keinem Programm so richtig unterstützt wird und das man das Geld lieber in einen guten Single Core investiert und man dadurch merklich mehr Leistung rauskriegt 😉 Wenn ichs getan hätte, hätte ich heute echt Probleme.

Manche Leute sagen jetzt vielleicht das ich immer die neueste Hardware brauche weil ich (wie ihr vielleicht gemerkt habt) so ziemlich jedes gute und gehypte Spiel spiele das erscheint und das auch ohne Ruckeln und mit maximaler Grafikeinstellung tun will aber als erfahrener Datensammler und Nicht-Defragmentierer behaupte ich jetzt mal das man wenigstens eine gute CPU braucht sonst lässt die Leistung eines PCs spätestens nach 1 - 2 Jahren extrem nach, dann dauert alles was man am PC tut ewig.
Mein PC leidet da aber noch stärker darunter als andere PCs weil ich bin einer der wenigen die es schaffen auf einer 1 TB Platte Platzprobleme zu kriegen 😉 Is aber auch kein Wunder ich hab neulich in meinem Downlads Ordner Dateien entdeckt die 7 Jahre alt sind und noch von meinem vorvorletzten PC stammen.

Und das alte Argument das man sich keinen Quad gekauft hat weil das viel teurer gewesen wäre zieht jetzt auch nicht mehr^^

Der direkte Vergleich zwischen einem Quad für 150€ und einem Dual für 200 € zeigt, dass der Quad immer noch schneller ist als der Dual.

Fazit: Auch wenn die 4 Kern Technologie derzeit noch nicht so viel bringt (mal abgesehen von der fast 1,4 fachen Leistung auch ohne das das Programm Quads unterstützt) sollte man sich auf jeden Fall einen Kaufen. Den das ist die einzig zukunftssichere Technologie. 3 - 4 Jahren wenn man sich einen neuen PC kauft gibt es immerhin schon 16 - Kern CPUs 😉

14.08.2008 - 07:32 Uhr

Mal abgesehn davon das du um das herauszufinden nur auf der msdn Seite ComboBox Klasse im Suchfeld eintippen musst und damit vermeidest hier so eine Frage zustellen, hast du die Antwort ja schon in deinem Post:

comboBox.items[hier dynamisch...sowas wie "selected index"].toString());

z.B. Mit comboBox.Items[0] bekommst du das erste Item

13.08.2008 - 12:13 Uhr

Interresant... Ich kann zwar hier im Forum herum navigieren und Threads anschauen aber wenn ich auf die Startseite von mycsharp.de gehe kommt die Meldung der Server wäre wegen Überlastung offline 😁

13.08.2008 - 11:42 Uhr

Hallo cosmicgirl72

Der Reader muss ja nicht dort weiterlesen wo er aufgehört hat. Es wäre sogar umständlicher wenn man es so machen müsste 😉 Lies von allen Seiten Text (oder was auch immer auf den Seiten ist) auf einmal ein und splitte ihn dann erst in die Seiten auf. Das ist meiner Meinung einfacher und auch performanter.

mfg
Sweet

13.08.2008 - 10:26 Uhr

Geile Komponente 😉

Werd gleich mal damit herum spielen

12.08.2008 - 23:51 Uhr

Wie stark die Frame Rate einbricht kannst du nicht so einfach beeinflussen. Du kannst nicht einfach sagen ich benutz jetzt ne andere Klasse und alles geht schneller und besser. Es hängt hauptsächlich davon ab wie gut dein Code ist bzw wie kompliziert die Berechnungen sind die du da anstellst.

In diesem Sinne kann ich nur sagen solltest du in deinem Code ein Thread.Sleep(1000); finden, lösch die Zeile 😉

/EDIT Wenn die Berechnungen ziemlich komplex sind und die Genauichkeit des Graphen nicht so wichtig ist, könntest du mal versuchen die Genauichkeit zu verringern.

12.08.2008 - 15:06 Uhr

Ich verdeutliche das für dich mal:

Geschwindigkeit 3p/Aktualisierung

Startpunkt: 100/90 Endpunkt: 120/80

Differenz: 20/-10

Weg zwischen den Punkten: Math.Sqrt(20 * 20 + 10 * 10) = 22,361

Pro Aktualiserung verschiebst du die Elipse jetzt um 20/(22,361 / 3) in X Richtung und um -10/(22,361 / 3) in Y Richtung, dann wird sich die Elipse genau mit der Geschwindigkeit 3 dem Zielpunkt nähern und ihn schließlich genau erreichen.

So einfach ist das 😉

12.08.2008 - 11:25 Uhr

Ich habs grad ausprobiert 👅
Mein aktuelles Projekt würde meinen 4 GB großen Ram in 10 - 15 Sekunden komplett zu müllen wenn ich die Disposes raus mach. 😉

12.08.2008 - 11:10 Uhr

Wenn man irgendwas zufällig bewegt ist es fast leichter es so zu machen das sich die Geschwindigkeit ändert, als dafür zu sorgen das sie gleich bleibt. Das sollte kein Problem sein.