Guten Tag, ich habe aus langeweile bisschen was programmiert. Nun habe ich mir einen Ordner erstellt wo ich alles abgelegt habe (Visual Studio 08) Ich will nur durch eine Einfache Programmierung zwischen 2 Bildern auswählen konnen: Der Code schaut wie Folgt aus: -------------------------------------------- #include <windows.h> #include <stdio.h> int x; void main() { printf("\n\t\t***Patchprogramm***"); printf("\n\n\n\t\t***Allgemeine Hinweise***"); printf("\n\t\tDas Benutzen dieses Programmes basiert"); printf("\n\t\tauf eigener Haftung!"); printf("\n\t\t*** <Enter> zum Akzeptieren ***"); fflush(stdin); getchar(); system("cls"); printf("\n\n\n\t\t***Auswahl***"); printf("\n\t\t1: Lehrer"); printf("\n\t\t2: Pflanze"); printf("\n\n\t\t***Wählen sie aus 1 oder 2*** \n\n\t\t"); scanf("%i",&x); printf("\n\n\t\t*** Ihre Auswahl :%i ***",x); if (x==1) { printf("\n\n\t\tdas lehrerbild wird geladen"); system("D:/SystemTest/SystemTest/***.jpg"); fflush(stdin); getchar(); } else if (x==2) { printf("\n\n\t\tdas Pflanzenbild wird geladen"); system("D:/SystemTest/SystemTest/***_pflänzlii.JPG"); fflush(stdin); getchar(); } else if (x>=3) { printf("\n\n\t\tkeine gültige Auswahl"); fflush(stdin); getchar(); } fflush(stdin); getchar(); -------------------------------------- Nun Die bilder sind abgelegt -> Siehe Anhang ------------------------------------- Nun im Code habe ich den ganzen Pfad angegeben, nun wenn ich den code als .exe weitergebe, wird der Dateipfad abgeändert und die Bilder wernden nicht mehr geladen. wie kann ich anstelle system("D:/dateipfad/bild.jpg"); das bild öffnen? ich habe gehört das geht mit system(".../bild.jpg"); hat aber nicht funktioniert, was kann ich da machen? also das das programm weis das sich das bild im gleichen ordner befindet... mfg und danke
:
Verschoben durch User
Basil schrieb: > also das das programm weis das sich das bild im gleichen ordner > befindet... Wenn du davon ausgehen kannst, dann lass den Pfad komplett weg. system("bild.jpg"); PS: eigentlich lädt den Programm ja das Bild gar nicht. Das du da eine Anzeige kriegst, hat mehr damit zu tun, dass du dem Commando-Interpreter von Windows mittels dem Aufruf von 'system()' den Auftrag gibst, irgendwas mit der angegebenen Datei zu machen. Und in deinem Fall lädt dann eben das System einen Bildbetrachter und weißt den wiederrum an, das ausgewählte Bild zu laden. Ich wollte das nur klar stellen, damit es da keine Missverständnisse gibt. Damit das von dir so angestrebte überhaupt funktioniert, muss da einiges im System korrekt funktionieren. Damit, dass dein Programm ein Bild 'geladen' hätte, kann man da kaum mehr sprechen. Aber das ist im Moment noch ok, denn in deinem Programm ist die ganze Sache nicht mehr so einfach zu realisieren.
Was du brauchst ist eine Form mit einer Picturebox 8-)! http://www.functionx.com/vcnet/controls/picturebox.htm wird Dir vielleicht helfen, ansonsten schau erstmal ein paar der vielen Hello World Videos auf youtube!
Übrigens ergibt das da keinen Sinn: Basil schrieb: > fflush(stdin); Ich weiß nicht, was Visual Studio da macht, aber nach ISO C ist das Verhalten undefiniert.
Rolf Magnus schrieb: > Übrigens ergibt das da keinen Sinn: > > Basil schrieb: >> fflush(stdin); > > Ich weiß nicht, was Visual Studio da macht, aber nach ISO C ist das > Verhalten undefiniert. Das mach ich einfach automatisch vor jedem getchar(); noch ein fflush(stdin); reihauen =) sonst wird auf einmal etwas übersprungen
\|||/ (o o) ,~~~ooO~~(_)~~~~~~~~~, | Please | | don't feed the | | TROLL! | '~~~~~~~~~~~~~~ooO~~~' |__|__| || || ooO Ooo
Basil schrieb: > Rolf Magnus schrieb: >> Übrigens ergibt das da keinen Sinn: >> >> Basil schrieb: >>> fflush(stdin); >> >> Ich weiß nicht, was Visual Studio da macht, aber nach ISO C ist das >> Verhalten undefiniert. > > > Das mach ich einfach automatisch vor jedem getchar(); noch ein > fflush(stdin); reihauen =) sonst wird auf einmal etwas übersprungen Wie gesagt: Nach ISO C ist das Verhalten undefiniert. Die Aufgabe von fflush() ist, den Inhalt des Puffers des Streams an sein Ziel zu senden, und das ist nur für Ausgabe-Streams sinnvoll, denn bei Eingabestreams ist das Ziel mein Programm, und dahin bekomme ich die Daten durch einfaches Lesen. Die Aufgabe ist nicht, wie du es offensichtlich erwartest, den Puffer-Inhalt zu verwerfen.
Wie oben im C-Code zu sehen ist , nehme ich an ihr habt gemerkt, das ich kein Professioneller Programmierer bin, ich kenne gelegentlich die Basis, Nach unserem Lehrer und eigenen Erfahrungen: Schreib ein programm das zum start die "Enter" taste verlangt, danach gib einen satz aus und warte nochmal auf ein Enter zum beenden. gut ohne fflush: void main() { getchar(); printf("satz"); getchar(); } --> nach dem ersten Enter wird das programm beendet, weil das "Enter" gespeichert ist und das 2 getchar auch gleich ausgelöst wird bzw bestätigt. so mit fflush: void main() { getchar(); printf("satz"); fflush(stdin); //Resettet das bereits vorhandene Enter getchar(); } und es funktioniert!! Zur Info Ich programmiere mit: Visualstudio 2008 -> Win32 Console Application -->C++ File (.cpp) Basils von C++ mfg
Basil schrieb: > und es funktioniert!! Das ist noch lange kein Argument. Nur weil die Hersteller der Libraries da teilweise etwas eingebaut haben, damit nicht so tolle Programmierer auch Programme schreiben können, heisst das noch lange nicht das es richtig ist. Denn beim nächsten Compiler auf den du stösst, kann alles wieder ganz anders sein. Was du gemerkt hast ist, dass es eine gute Idee ist, auch mal Fehler abzufngen. Ja, auch bei getchar kann es zu Fehlersituationen kommen. Wenn du vernünftige Eingaben verarbeiten willst, dann ist oft fgets die Funktion der Wahl.
Hei Leute! Ich bin jetzt durch Zufall mal auf die Seite hier gestoßen... Das hier ist mal wieder ein Beispiel dafür was ein Forum NICHT sein sollte. Entweder ihr helft ihm, oder ihr lasst es halt einfach! Auch wenn's schon länger her ist... hier für alle SCHÜLER, deren Lehrer fflush benutzt, weil ers einfach nicht besser weiß: Was steht als letztes Zeichen im Buffer? ja genau: "\n" das new-line-symbol. klar kannst du hier auch sehr elegant eine kleine Funktion definieren, die getchar nutzt! void leeren(){while(getchar!="\n"){}; }; in deiner main gibst du dann einfach immer leeren(); an und gut ists! -->leeren(); holt so lange kram ausm Buffer, bis Schluss ist und tut nichts damit--> Buffer leer, keine Probleme!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.