myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   HILFE!! BEKOMME C++ Code nicht in .exe (https://mygully.com/showthread.php?t=2606010)

Phinitris 12.04.12 15:14

HILFE!! BEKOMME C++ Code nicht in .exe
 
Hallo,
ich habe folgenden Code aus'm Internet:



nur irgendwie kriege ich den mit Dev-C++ 4.9.9.2 nicht kompiliert.
Kriegt ihr das mit nem anderen Programm hin?
Der Code ist richtig. Also es gibt keine Fehler.

smdata2 12.04.12 16:17

Bitte ein bisschen präziser ... wenn du es nicht kompiliert bekommst, wird wohl ein Fehler oder irgendwas kommen ... Was passiert denn wenn du in Dev-C++ das Programm kompilierst?

Data

Phinitris 12.04.12 16:43

Hier das Bild mit den Fehlern.

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

ProgMaster 12.04.12 17:17

Englisch kannst Du? Die Fehlermeldungen kannst Du lesen?
Wie kommst Du darauf, dass der Code richtig ist?

Phinitris 12.04.12 17:43

Weil ich ihn aus einem Forum habe. Und da ist der auch richtig!! Die haben den Quellcode aber mit dem Borland 5 Prog zur exe gemacht. Also müsste ich den Compiler haben, aber das Problem ist dass der nur unter 32bit läuft ich hab Win7 64bit. Und der läuft auch nur unter 95,98 und NT. Über Kompilitätsmodus gehts net. Also brauch ich nen PC mit 95,97 oder NT. Aber Virtuell will ich net machen da damit der PC vollgemüllt wird. Also brauch ich einen Geeigneten Kompiler. Oder kann man den S***** umformen? Und ja Englisch kann ich :)

Sop
hab fast alle Probleme gelöst.

Hier der neue Code
Zitat:

#include <stdio.h>
#include <conio.h>
#include <string.h>

using namespace std;

int main
{
const char *pers_nr = "666"; //Zugangsnr (MAXIMAL 8 ZEICHEN)
const char *code = "drin"; //Zugangscode (MAXIMAL 8 ZEICHEN)

char *ab_pers; //Abgefragte Zugangsnr
char *ab_code; //Abgefragter Zuganscode

int i = 0; //Schleifendurchläufe
int codeguard; //Rückgabewert des Stringvergleiches

for(i=0;i<3;)
{
printf(" ENTRY TO PENTAGON\n");
printf(" ~~~~~~~~~~~~~~~~~\n");

ab_pers = getpass(" IDNR: ");
printf(" \n");

codeguard = strcmp(pers_nr, ab_pers);

if((codeguard > 0) || (codeguard < 0))
{
i++;
gotoxy(45, 30);
printf("!! WRONG IDNR !!\n");
gotoxy(45, 31);
printf("!! ACCESS DENIED !!\n ");

if(i == 3)
{
gotoxy(45, 33);
printf("!! SYSTEM ABBORTED !!\n\a ");
getch();
continue;
}
else
{
getch();
clrscr();
continue;
}
}//if

ab_code = getpass(" PASSWORD: ");
printf(" \n");

codeguard = strcmp(code, ab_code);

if((codeguard > 0) || (codeguard < 0))
{
i++;
gotoxy(45, 30);
printf("!! WRONG PASS !!\n");
gotoxy(45, 31);
printf("!! ACCESS DENIED !!\n ");

if(i == 3)
{
gotoxy(45, 33);
printf("!! SYSTEM ABBORTED !!\n\a ");
getch();
continue;
}
else
{
getch();
clrscr();
continue;
}
}//if
gotoxy(45, 30);
printf("!! ACCESS GRANTED !!\n\a ");
i = 3;
getch();

}//for
cin.synch
cin.get
return 0()
}//main
Habe ganz oben was geändert. Mit using namespace std und int main.
Das einzige Problem:

Zeile 8:
invalid function declaration

Deraazuul 12.04.12 18:38

Der Code ist falsch, es muss "int main(){" sein und nicht "int main{" , plus änder das "return 0()" in "return 0;" . Des weiteren sind "gotoxy(int,int)" und "getpass(...)" kein Standard sonder Compiler spezifisch, die Gesamte "conio.h" ist kein Standard.

slahn 13.04.12 07:01

Ich hab hier mal aus purer Langeweile heraus und wegen dem Spaß am programmieren, eine "ähnliche" Implementierung in C++ verfasst. Der Einfachheit halber, habe ich selbst keine Klassen angelegt. Es werden reine STD-C++ Funktionen verwendet und keine System abhängigen Libs.

Mein Versuch:

Phinitris 13.04.12 10:08

Sorry,
bin noch Neuling in dem Gebiet :(
Also macht die Main.cpp den Hauptteil und die .h sind die funktionen die die main.cpp dafür benötigt?
Wie kompilier ich das denn? Ich habe alle Dateien per Dev-C++ auf'm Desktop abgespeichert. Aber wenn ich jetzt auf die Main gehe und f9 zum kompilieren drücke dann steht da.
[Linker Error] undefined reference to login(int)
Id returned 1 exit status.

Wo ist denn der Fehler oder liegst an meinem Kompiler?
Hab das ganze jetzt als Projekt gemacht. Da kommen aber noch mehr Fehler.

slahn 13.04.12 10:57

Also, login.cpp liefert alle Funktionen für den Login (also "bool login(int versuche);") in der Header-Datei stehen die Deklarationen (Also Namen der Funktionen), damit man ein anderes Programm mit login.cpp bekannt machen kann (login.h ist so eine art Betriebsanleitung).
main.cpp ist von mir nur ein Beispielprogramm. Es kann aber durch jedes andere beliebige selbstgeschrieben Programm ersetzt werden (wichtig ist, dass in dem Programm #include "login.h" steht, damit es eben weiß, wo die Funktionen zu finden sind).

Damit du das ganze Kompilieren und Linken kannst, musst du (ich mach es jetzt mal ganz simpel) ein Projekt erstellen und alle drei Dateien einfügen. Danach solltest du es kompilieren können.

Phinitris 13.04.12 11:31

Geilo geht. Kann man das auch noch so machen, dass nach 3 mal Falsch der PC piept? Dieser BIOS Piep ton

slahn 13.04.12 11:47

ja, kannst du ...

cout << '\a';

\a ist eine [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] und steht für BELL. Überall wo du das hinschreibst/ausgibst, wird ein Warnton erzeugt. Also einfach in login.cpp fast ganz unten in der letzten else{} "cout << '\a';" hinschreiben. Wenn du es bei jeder Falschen Passworteingabe haben willst, schreib es in die vorletze else{} (zb. nach "...<< "!! WRONG ID-NUMBER OR PASSWORD !!"" << endl; )

Phinitris 13.04.12 12:06

Ah okey,
kann ich das auchso machen das das Piepen mehrmals kommt? also nicht
cout << '\a';
cout << '\a';
cout << '\a';

sondern in abständen alle 3 sek oder so.
Und das das auch mit Ton aus geht?
Also manche Viren ertönen ja auch wenn der Ton aus ist.
Kann man das nicht in eine Schleife machen? Also mit while?

slahn 13.04.12 12:42

Sleep() ist unter Windows für das warten eines Prozesses zuständig. Sleep(3000); wartet 3 Sekunden lang, bis der Prozess, nach dem Aufruf von Sleep() wieder fortgesetzt wird.

Wenn ich dich richtig verstehe, willst du das haben ...


Für Sleep musst du noch windows.h einbinden. Aber dann geht der Code nur mehr unter Windows. Sleep() wird in Millisekunden angegeben (Sekunden mal 1000). Ohne Sleep läuft es zwar wieder überal, aber es piept dann etwas schneller und wird dir sehr wahrscheinlich dein OS zu Fall bringen ...

Aber ganz ehrlich, das ist eher eine Pfuschlösung. Möglich wäre noch die boost-libs zu verwenden, dann wäre das Problem mit der Systemabhängigkeit auch gelöst. Aber dazu rate ich dir, dass du dich mal eher Allgemein mit dem Thema C++ beschäftigst, bevor du mit solchen sachen wie threads und boost anfängst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.