Sponsor-Board.de
Antwort schreiben  Thema schreiben 

[C++] Dialog-Textfeld Eingabe verwenden

Verfasser Nachricht

Beiträge: 510
Bewertung: 3
Registriert seit: Apr 2013
Status: offline


Beitrag: #1
[C++] Dialog-Textfeld Eingabe verwenden

Hallo,

ich habe folgenden Code im Internet gefunden:

PHP-Code:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <windows.h>
 
char initChoice;
 
char username;
char password;
char usery0;
char passy0;
 
void Login();
void Register();
 
int main()
{
    
system("title XeClutch - Simple Login System");
    
system("color a");
    
printf("Hello, what would you like to do?\n[A] Login\n[B] Register\n");
    
scanf("%c", &initChoice);
    if(
initChoice == 'A' || initChoice == 'a')
    {
        
Login();
    }
    else if(
initChoice == 'B' || initChoice == 'b')
    {
        
Register();
    }
    else
    {
        
printf("Invalid Operation...");
        
system("pause");
    }
    return 
0;
}
 
void Login()
{
    
printf("\n\nPlease enter your username: ");
    
scanf("%s", &usery0);
    if(
usery0 == username)
    {
        
printf("Please enter your password: ");
        
scanf("%s", &password);
        if(
passy0 == password)
        {
            
printf("Successful Login!");
            
system("pause");
        }
        else
        {
            
printf("Incorrect Password...\n");
            
system("pause");
        }
    }
    else
    {
        
printf("Incorrect Username...\n");
        
system("pause");
    }
}
 
void Register()
{
    
printf("\n\nEnter a new username: ");
    
scanf("%s", &username);
    
printf("Enter a new password: ");
    
scanf("%s", &password);
    
printf("\nRegistration Successful!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
    
main();


Nun wollte ich fragen, wie ich am besten die Eingabe vom Dialog-Textfeld verwende.

Ich habe das Script soweit gekürzt:

PHP-Code:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <windows.h>
 
char username;
char password;
char usery0;
char passy0;
 
void Login();
 
void Login()
{
    
scanf("%s", &usery0);
    if(
usery0 == username)
    {
        
printf("Please enter your password: ");
        
scanf("%s", &password);
        if(
passy0 == password)
        {
            
printf("Successful Login!");
            
system("pause");
        }
        else
        {
            
printf("Incorrect Password...\n");
            
system("pause");
        }
    }
    else
    {
        
printf("Incorrect Username...\n");
        
system("pause");
    }


Da ich absoluter C++ Anfänger bin, hab ich noch nicht so wirklich den Durchblick. Biggrin Wäre sehr erfreut, wenn mir jemand helfen könnte^^


Mit freundlichen Grüßen,
Jerr0w ~

Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2016 21:51 von Jerr0w.

08.12.2016 21:19
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 544
Bewertung: 32
Registriert seit: May 2012
Status: offline


Beitrag: #2
RE: [C++] Dialog-Textfeld Eingabe verwenden

Ich habs so gelernt:

PHP-Code:
#include <iostream>
#include <stdio.h>
string eingabe;
cout << "Bitte xyz eingeben: " << endl;
cin >> eingabe;
cout << "Deine Eingabe war" << eingabe << endl


Ist halt eine komplett andere Methode, daher brauchst du auch iostream (ohne ".h").


P.S.
Von dem

PHP-Code:
system("pause"); 

Rate ich dir dringend ab. Es gibt nix cooleres als wenn du dein Programm testweise mal unter einem anderen OS compilierst - mit obigen Code bindest du dich zwangsweise an Windows (daher auch windows.h).
Unter UNIX hast du keinen solchen Befehl.

Achso:

Der Datentyp "Char" ist nur ein Zeichen, du musst entweder ein Char Array erstellen (aneinanderreihung mehrerer Zeichen) oder du nutzt einfach einen string.

Bspw:

PHP-Code:
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
char eingabe_als_char;
string eingabe_als_string;
//String sind mehrere Chars hintereinander - Char Array sind logisch mehrere Chars untereinander.
char eingabe_tmp;
int main()
{
    
cout << "Bitte EINEN Buchstaben eingeben: " << endl;
    
cin >> eingabe_tmp;
    
eingabe_als_char eingabe_tmp;
    
eingabe_als_string eingabe_tmp;

    
cout << "Eingabe als CHAR: " << eingabe_als_char << endl << "Eingabe als String: " << eingabe_als_string << endl;
    
//Jetzt wirds interessant
    
cout << "Bitte EINEN Buchstaben eingeben: " << endl;
    
cin >> eingabe_tmp;
    
eingabe_als_char eingabe_als_char eingabe_tmp// ASCII Wert von 1. Buchstaben wird auf 2. Buchstaben addiert
    
eingabe_als_string eingabe_als_string eingabe_tmp//Buchstabe wird hinter den 2. Buchstaben angereiht.
    
cout << "Eingabe als CHAR: " << eingabe_als_char << endl;
    
cout << "Eingabe als String: " << eingabe_als_string << endl;


[Link: Registrierung erforderlich]

IxDe.eu | iTaLiaN-PoWeR
- Das Management

Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2016 23:45 von italian-power.

08.12.2016 22:57
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 510
Bewertung: 3
Registriert seit: Apr 2013
Status: offline


Beitrag: #3
RE: [C++] Dialog-Textfeld Eingabe verwenden

italian-power schrieb:
Ich habs so gelernt:

Code:
#include <iostream>
#include <stdio.h>
string eingabe;
cout << "Bitte xyz eingeben: " << endl;
cin >> eingabe;
cout << "Deine Eingabe war" << eingabe << endl;


Ist halt eine komplett andere Methode, daher brauchst du auch iostream (ohne ".h").


P.S.
Von dem

Code:
system("pause");

Rate ich dir dringend ab. Es gibt nix cooleres als wenn du dein Programm testweise mal unter einem anderen OS compilierst - mit obigen Code bindest du dich zwangsweise an Windows (daher auch windows.h).
Unter UNIX hast du keinen solchen Befehl.


Hey, danke schonmal für die Antwort^^

ist eig auch zwangsweise für Windows Smile ich probier mich erstmal an der Command-Prompt von Windows, anstatt direkt an ein GUI zu gehen. Bisher geht's super Biggrin


Mit freundlichen Grüßen,
Jerr0w ~

08.12.2016 23:20
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 544
Bewertung: 32
Registriert seit: May 2012
Status: offline


Beitrag: #4
RE: [C++] Dialog-Textfeld Eingabe verwenden

Naja, der Hauptvorteil von C++ ist eben Crossplattform.
Ich habe in der Schule immer Konsolenanwendungen erstellt, testweise dann auch mal einige Codes in Linux mit gcc compiled und siehe da: es liefen fast alle problemlos und auf anhieb.

Funktioniert dein "Ursprungscode" schon?
das "&" bei bspw scanf("%s", &username); bewirkt, dass der Funktion die Speicheradresse übergeben wird.
Ich gehe stark davon aus, dass scanf den eingelesenen Wert (%s = String ?) in die Speicheradresse schreibt. Es wird also keine Kopie der Variable "username" erstellt.
Demnach könntest du nachdem du einen account erstellt hast und dich einloggst eine Willkommensnachricht senden:

PHP-Code:
void login()
{
... 
login erfolgreich
printf
("Willkommen " +username);
...

Oder beim registrieren:

PHP-Code:
void register ()
{
... 
registrierung erfolgreich
  printf
("\nRegistration Successful!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  
printf("Accountname: \t" +username+"\n Passwort: \t" +password);

    
main();
...


Ausgabe wäre dann:

Code:
Registration Successful!


Accountname:          a
Passwort:                3


Also falls das wirklich so ist muss der compiler einen Fehler ausgeben, spätestens wenn du zwei Zeichen eingibst stürzt das Programm aber ab.

Problem: scanf denkt er hat die Speicheradresse eines String, ein String ist immer mindestens um ein byte länger als ein Char. -> Speicherzugriffsfehler.

PS: Die gekürzte Version wird natürlich nicht funktionieren.


[Link: Registrierung erforderlich]

IxDe.eu | iTaLiaN-PoWeR
- Das Management

Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2016 00:20 von italian-power.

09.12.2016 00:13
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 510
Bewertung: 3
Registriert seit: Apr 2013
Status: offline


Beitrag: #5
RE: [C++] Dialog-Textfeld Eingabe verwenden

italian-power schrieb:
Naja, der Hauptvorteil von C++ ist eben Crossplattform.
Ich habe in der Schule immer Konsolenanwendungen erstellt, testweise dann auch mal einige Codes in Linux mit gcc compiled und siehe da: es liefen fast alle problemlos und auf anhieb.

Funktioniert dein "Ursprungscode" schon?
das "&" bei bspw scanf("%s", &username); bewirkt, dass der Funktion die Speicheradresse übergeben wird.
Ich gehe stark davon aus, dass scanf den eingelesenen Wert (%s = String ?) in die Speicheradresse schreibt. Es wird also keine Kopie der Variable "username" erstellt.
Demnach könntest du nachdem du einen account erstellt hast und dich einloggst eine Willkommensnachricht senden:

PHP-Code:
void login()
{
... 
login erfolgreich
printf
("Willkommen " +username);
...

Oder beim registrieren:

PHP-Code:
void register ()
{
... 
registrierung erfolgreich
  printf
("\nRegistration Successful!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  
printf("Accountname: \t" +username+"\n Passwort: \t" +password);

    
main();
...


Ausgabe wäre dann:

Code:
Registration Successful!


Accountname:          a
Passwort:                3


Also falls das wirklich so ist muss der compiler einen Fehler ausgeben, spätestens wenn du zwei Zeichen eingibst stürzt das Programm aber ab.

Problem: scanf denkt er hat die Speicheradresse eines String, ein String ist immer mindestens um ein byte länger als ein Char. -> Speicherzugriffsfehler.

PS: Die gekürzte Version wird natürlich nicht funktionieren.


Hey, ja ich weiß^^

habs auch anders gekürzt jetzt. Was mein nächstes Vorhaben wäre, ist folgendes: Ich schreibe mir eine Authentication.php, welche mit meinem Programm kommunizieren kann.

Das heißt: Ein User kann sich erstmal auf meiner Seite registrieren und anschließend dann im Programm einloggen. Beim Login wird eine Anfrage an die Authentication.php geschickt, welche dann schaut, ob der User, das Passwort und die Hardware-ID übereinstimmen. Anschließend gibt die Authentication.php ein "OK" oder "ERROR" zurück.

Wenn die Authentifizierung erfolgreich war, wird man weitergeleitet zu einem Optionsmenü, in welchem er zwischen 3 Optionen auswählen kann. Wenn die Authentifizierung nicht erfolgreich war, gibt's einfach eine Error-Message, dass User, Passwort oder HWID nicht stimmen.

Und jetzt komme ich zur eigentlichen Frage: Wie handhabe ich die Kommunikation zwischen PHP und meinem Programm?


Mit freundlichen Grüßen,
Jerr0w ~

Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2016 12:05 von Jerr0w.

09.12.2016 12:05
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 1.306
Bewertung: 6
Registriert seit: May 2009
Status: offline


Beitrag: #6
RE: [C++] Dialog-Textfeld Eingabe verwenden

C++, Cross-Plattform-Kompatibilität? Irgendwas passt da nicht so ganz, denn C++ muss auf jedem Rechner neu kompiliert werden, um überhaupt Bytecode-Dateien zu erhalten die auch dem Maschinencode des jeweiligen Chipsatzes entsprechen.

Verwechselt ihr das vllt grade mit Java? Das ist wirklich Cross-Plattform-Kompatibel

09.12.2016 13:13
 
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren

Beiträge: 510
Bewertung: 3
Registriert seit: Apr 2013
Status: offline


Beitrag: #7
RE: [C++] Dialog-Textfeld Eingabe verwenden

Dennis schrieb:
C++, Cross-Plattform-Kompatibilität? Irgendwas passt da nicht so ganz, denn C++ muss auf jedem Rechner neu kompiliert werden, um überhaupt Bytecode-Dateien zu erhalten die auch dem Maschinencode des jeweiligen Chipsatzes entsprechen.

Verwechselt ihr das vllt grade mit Java? Das ist wirklich Cross-Plattform-Kompatibel


Ich hab nie von Cross-Plattform geredet. Das war italian Biggrin

Aber C++ kann man auf jeden Fall unter Linux compilen.


Mit freundlichen Grüßen,
Jerr0w ~

09.12.2016 14:02
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Frage TextFeld HTML ? HardwareNow 1 1.895 06.12.2016 12:46
Letzter Beitrag: Muetzus
  Typo3 6.2 Fal verwenden schwarzdavid 0 1.181 30.07.2014 08:39
Letzter Beitrag: schwarzdavid
  PHP MD5 Passwort mit Eingabe vergleichen eplays.de 6 6.996 08.03.2011 15:27
Letzter Beitrag: _DEL3257
  Privateseite mit Benutzer und Passwort eingabe *3D-Creator* 3 1.632 14.09.2010 12:58
Letzter Beitrag: *3D-Creator*

 Druckversion anzeigen
 Thema einem Freund senden
 Thema abonnieren
 Thema zu den Favoriten hinzufügen

Sponsor-Board.de

Community
Über uns
Partner
Powered by Mybb: Copyright 2002-2024 by MyBB Group - Deutsche-Übersetzung von Mybb.de
 
© 2007-2024 Sponsor-Board.de - Hosted by OVH

Willkommen auf SB!   Sie benötigen ein Sponsoring?   1. Anmelden   2. Sponsoring-Anfrage erstellen   3. Nachrichten von Sponsoren erhalten   Kostenlos!   Jetzt registrieren