Coders Chit-Chat

01/09/2016 15:10 Xzabit#331
Looking for developer/s to make a simple emulator for a game. paying!
contact; PM or [Only registered and activated users can see links. Click Here To Register...]
01/11/2016 02:03 alpines#332
Quote:
Originally Posted by Xzabit View Post
Looking for developer/s to make a simple emulator for a game. paying!
contact; PM or [Only registered and activated users can see links. Click Here To Register...]
Don't ask everywhere for it. Go use the black market section of Coders Den.
01/11/2016 09:59 Devsome#333
Arbeitet hier jemand mit Laravel ?
Sofern ja hätte ich da vll 1-2 kleine Fragen.

// Problem gelöst :3
01/25/2016 18:05 Syc#334
[Only registered and activated users can see links. Click Here To Register...]

bin mal wieder darauf gestoßen, wurde evtl schon mal gepostet, ist aber dennoch ganz interessant.
01/26/2016 07:37 Moneypulation#335
Quote:
Originally Posted by Syc View Post
[Only registered and activated users can see links. Click Here To Register...]

bin mal wieder darauf gestoßen, wurde evtl schon mal gepostet, ist aber dennoch ganz interessant.
Ganz schön große ToDo Liste :eek: :(
01/30/2016 13:39 ZaanyHD#336
Wollte nen kleine Passwortsystem in C# machen das egal in welcher Groß oder Kleinschreibung das Passwort akzeptiert.

Wie schaffe ich es das bei der Abfrage die Groß-Klein Schreibung ignoriert wird?
01/30/2016 13:50 Syc#337
Einfach bei der Abfrage mit String.ToUpper vergleichen
01/30/2016 15:20 Moneypulation#338
Quote:
Originally Posted by Syc View Post
Einfach bei der Abfrage mit String.ToUpper vergleichen
oder String.ToLower :awesome:

Hab mal ne kleine Frage. Wenn ich in einer Funktion ein int i = 0; initialisiere, was passiert dann wenn ich die Funktion öfters aufrufe? Habe ich dann in der Laufzeit mehrere Variablen im Speicher oder werden locale Variablen nach der Funktion wieder "gelöscht"?
01/30/2016 15:39 warfley#339
Quote:
Originally Posted by Moneypulation View Post
oder String.ToLower :awesome:

Hab mal ne kleine Frage. Wenn ich in einer Funktion ein int i = 0; initialisiere, was passiert dann wenn ich die Funktion öfters aufrufe? Habe ich dann in der Laufzeit mehrere Variablen im Speicher oder werden locale Variablen nach der Funktion wieder "gelöscht"?
Funktionen werden von compilern als unterprogramme realisiert welche so zu sagen ihren eigenen Stack haben. Bei Aufruf wird der Speicher auf den Stack gepusht, beim verlassen wird dieser komplette Bereich wieder gelöscht

Ein schönes C Beispiel welches das veranschaulicht:

Code:
void foo() {
  int i;
  i = 5;
}

void bar() {
  int i;
  printf("%d", i);
}

void main() {
  foo();
  bar();
}
das ganze würde dann 5 ausgeben, da die erste Funktion auf dem Stack eine Variable erzeugt, dann der Speicher freigegeben wird, und dann die nächste Funktion, mit der Selben Speicherbelegung auf der selben Stelle im Speicher initialisiert wird, und somit ist i genau das i von vorher
01/30/2016 16:30 ZaanyHD#340
PHP Code:
  string passworteingabe Convert.ToString(textBox1.Text.ToLower());
            
string passwort "prog";

            
            

           
            

            if (
textBox1.Text == passwort.ToLower())
            {
                
MessageBox.Show("Login erfolgreich");
            } 
Funktioniert irgendwie nicht so ganz :(
01/30/2016 16:34 Syc#341
Quote:
Originally Posted by ZaanyHD View Post
Funktioniert irgendwie nicht so ganz :(
Du vergleichst die falschen Strings miteinander. Du speicherst die Textbox in eine variable und benutzt dann ToLower. Verwendest dann aber nicht diese Variable.

So (damit kannst du die variable passworteingabe komplett weglassen)

PHP Code:
 if (textBox1.Text.ToLower() == passwort.ToLower()) 
oder so (wenn du eine extra variable verwenden möchtest)

PHP Code:
 if (passworteingabe == passwort.ToLower()) 
02/01/2016 20:45 MrSm!th#342
Quote:
Originally Posted by ZaanyHD View Post
Wollte nen kleine Passwortsystem in C# machen das egal in welcher Groß oder Kleinschreibung das Passwort akzeptiert.

Wie schaffe ich es das bei der Abfrage die Groß-Klein Schreibung ignoriert wird?
Quote:
Originally Posted by Syc View Post
Einfach bei der Abfrage mit String.ToUpper vergleichen
Die "korrekte" Variante wäre:

Code:
passwort.Equals(textBox1.Text, StringComparison.OrdinalIgnoreCase)
Korrekt in Anführungszeichen, weil deine Lösung zwar funktioniert, aber unnötigerweise eine Kopie erzeugt.

Quote:
Originally Posted by Moneypulation
Hab mal ne kleine Frage. Wenn ich in einer Funktion ein int i = 0; initialisiere, was passiert dann wenn ich die Funktion öfters aufrufe? Habe ich dann in der Laufzeit mehrere Variablen im Speicher oder werden locale Variablen nach der Funktion wieder "gelöscht"?
Kommt auf die Sprache an, in der Regel sind lokale Variablen aber auf dem Stack und verschwinden nach dem Verlassen des Scopes.

Quote:
Originally Posted by warfley
das ganze würde dann 5 ausgeben, da die erste Funktion auf dem Stack eine Variable erzeugt, dann der Speicher freigegeben wird, und dann die nächste Funktion, mit der Selben Speicherbelegung auf der selben Stelle im Speicher initialisiert wird, und somit ist i genau das i von vorher
Nein. Genau so gut könnte dein PC in die Luft gehen oder all deine Passwörter an die NSA senden. Das Verhalten beim Auslesen von uninitialisierten lokalen Variablen ist in C undefiniert. Du möchtest kein undefiniertes Verhalten.
02/01/2016 21:45 warfley#343
Quote:
Originally Posted by MrSm!th View Post
Nein. Genau so gut könnte dein PC in die Luft gehen oder all deine Passwörter an die NSA senden. Das Verhalten beim Auslesen von uninitialisierten lokalen Variablen ist in C undefiniert. Du möchtest kein undefiniertes Verhalten.
Du hast recht, es ist in C nicht explizit definiert, allerdings ist in C die Speicherbelegung für Funktionsaufrufe fest definiert und deterministisch, und im Betriebsystem die Art der Speicheralloziierung. Und das beides zusammen Impliziert meine Aussage. Auch wenn ich Stark vereinfacht habe, indem ich von Windows, Linux oder MacOSX ausgegangen bin, und davon ausgegangen bin dass keine weitere Speicherallozierung oder Freigabe während des Programmablaufs geschieht, was in den meisten Situationen auch stimmt.

Natürlich hätte ich noch dazuschreiben müssen dass dies nicht zu 100% sicher ist und man daher sich nicht drauf verlassen sollte
02/01/2016 22:10 MrSm!th#344
Nein, das ist keinesfalls deterministisch und festgelegt. Der Code kann z.B. dahingehend optimiert werden, dass er inlined wird oder einzelne Parameter in Registern übergeben werden, die natürlich zwischenzeitlich auch für andere Rechnungen und lokale Variablen verwendet werden können. Aber ob mit oder ohne Optimierungen: Bei lokalen Variablen ist weder garantiert, wo sie gespeichert werden, noch in welcher Reihenfolge sie gespeichert werden, solange die Semantik des Programms erhalten bleibt.

Selbst wenn triviale Beispiele wie deins stellenweise funktionieren können, kann sich das schlagartig durch das Hinzufügen, Ändern oder Löschen weniger Zeilen ändern.

Davon abgesehen kann das System Mechanismen zum Verhindern/Erkennen von Bufferoverflows verwenden, die bestimmte Kontrollwerte auf dem Stack ablegen, damit kein Überschreiben der Return Address möglich ist. Auch dass kann dir bei solchen Erwartungen dazwischen funken.
02/03/2016 23:41 ლʕಠᴥಠʔლ#345
Wobei man bei einem deutschen Programm lieber InvarianteCulture (bzw. CurrentCulture in .NET Core) anstatt Ordinal wählen sollte. Sonst wird ein Unterschied zwischen Großbritannien und Grossbritannien gemacht.