Toon posts:

[C++] DOS progsel probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ok, ik heb de volgende code gegenereerd (nie moeilijk maar hoeft ook nie)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
using namespace std;

int main(void)
{
        int getal1, getal2;
        
        cout << "Geef twee getallen: "  << endl;
        cin >> getal1 >> getal2;
        cout << "De getallen zijn: " << getal1 << " " << getal2;
        cin.get();

        return 0;
}


Als ik deze code invoer In Borland CBuilder 6 Enterprise, en doe compileren doet ie het wel, maar zodra ik 2 getallen heb ingevoerd en op ENTER druk, sluit ie HET DOS venstertje! :S

Ik ben pas begonnen met C++ en dus ook met CBuilder, en heb nog niet veel ervaring hiermee! Ik heb wel ervaring met JAVA en JBuilder 7!

Maar goed, enig idee waar de fout zit? In de code? Of instellingen van CBuilder? Of nog wat anders?

  • Maarten
  • Registratie: Januari 2002
  • Niet online
je bent de getch(); vergeten,

die zorgt ervoor dat het progie blijft draaien totdat je nogmaals op enter drukt

:D suc6

Verwijderd

Topicstarter
Hmm, ok! Zit wat in ja, maar als ik deze zo toevoeg, krijg ik de volgende ERROR van CBuilder:

[C++ Error] Unit1.cpp(13): E2268 Call to undefined function 'getch'

Ik heb getch(); onder cin.get() gezet! Das toch goed ?

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

Mja. Windows he. Sluit dos vensters als het programma afgesloten is. getch() helpt daar idd mee...
Je programma is niet brak, Windows doet nie wat je wil...

Forget your fears...
...and want to know more...


  • Maarten
  • Registratie: Januari 2002
  • Niet online
dat klopt idd, zo zou het moeten werken, idd geval hier thuis @ Visual C++, DeV C++ en SuperIDE,

ik weet niet hoe het met deze compiler zit, maar dit zou zo wel moeten werken,
* Maarten gaat het hier ff proberen

bij mij WinXP en DEV C++ doet ie et wel, maar wordt het net als bij jou
direct afgesloten

ik heb em dan gecopileerd, en daarna de .exe in de compibaliteits mode gedraait dat werkt wel :D

Verwijderd

Topicstarter
Bij mij Compileert ie dus niet, vanwege die error :S

[error]
[C++ Error] Unit1.cpp(13): E2268 Call to undefined function 'getch'
[/error]

Waar ligt dit dan aan ?

Verwijderd

Verwijderd schreef op 07 november 2002 @ 19:19:
Ok, ik heb de volgende code gegenereerd (nie moeilijk maar hoeft ook nie)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
using namespace std;

int main(void)
{
        int getal1, getal2;
        
        cout << "Geef twee getallen: "  << endl;
        cin >> getal1 >> getal2;
        cout << "De getallen zijn: " << getal1 << " " << getal2;
        cin.get();

        return 0;
}


Als ik deze code invoer In Borland CBuilder 6 Enterprise, en doe compileren doet ie het wel, maar zodra ik 2 getallen heb ingevoerd en op ENTER druk, sluit ie HET DOS venstertje! :S

Ik ben pas begonnen met C++ en dus ook met CBuilder, en heb nog niet veel ervaring hiermee! Ik heb wel ervaring met JAVA en JBuilder 7!

Maar goed, enig idee waar de fout zit? In de code? Of instellingen van CBuilder? Of nog wat anders?
Gewoon nog een cin.get();

Werkt ook wel eens :) getch() moet je iets voor includen al weet ik zo ff niet welke

Verwijderd

Topicstarter
HAHA, een tweede cin.get(); werkt idd wel! Toch zou ikd an graag willen weten wat je zou moeten includen zodat ik getch(); kan gebruiken ! :)

Verwijderd

Verwijderd schreef op 07 november 2002 @ 19:34:
HAHA, een tweede cin.get(); werkt idd wel! Toch zou ikd an graag willen weten wat je zou moeten includen zodat ik getch(); kan gebruiken ! :)
conio.h , heb het ff snel opgezocht :)

Verwijderd

Topicstarter
conio.h ! Jep da is ie! En het werkt, thnx! kan'k eindleijk weer vedre, met wat ingewikkeldere dingen! :)

Verwijderd

Verwijderd schreef op 07 november 2002 @ 19:49:
conio.h ! Jep da is ie! En het werkt, thnx! kan'k eindleijk weer vedre, met wat ingewikkeldere dingen! :)
Hehe :D succes :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:40
Als je ff op die 'getch' was gaan staan en op F1 gedrukt had, dan werd de mooie help geopend, en daar ging je wel in vinden dat je conio.h nodig had voor die functie.
Trouwens, die getch is niet echt 'portable'.

Wat me wel verbaasd is, dat dat programma direct afgesloten wordt, alhoewel daar toch nog een cin.get() staat die normaal gezien toch op invoer zou moeten wachten. Heb je geen member functie van cin zoals getline oid? Ik zou die getch() eens weglaten, en die laatste cin.get vervangen door een cin.getline()

https://fgheysels.github.io/


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 24-08 22:38
Er is al eens vaker een thread over geweest, je moet cin eerts flushen omdat er een cr blijft staan op deze manier.. ff zoeke...

[edit]
Zie hier:
[rml][ C++] cin.get resetten?[/rml]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:40
code:
1
cin.seekg(0);

:?

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

en waar is nu het DOS gedeelte :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 09-08 22:22
.oisyn schreef op 07 november 2002 @ 20:10:
en waar is nu het DOS gedeelte :?
In zijn DOS-box. Ja soms is het lastig te onthouden dat console programma's niet altijd DOS programma's zijn :P.

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


Verwijderd

Bovendien is het ook heel handig om een getch() aan het einde van een console app te plaatsen, want dan kun je die app tenminste nooit meer in scripts of batches gebruiken, en dat is natuurlijk een enorm voordeel bij console apps >:)

  • Marc
  • Registratie: November 2001
  • Laatst online: 01-12-2021
als ik iets code onder windows laat ik gewoon altijd een DOS venstertje open, hoef ik ook niet over die getch(); na te denken.
ik vind een getch(); aan het einde van je code er sowieso niet echt netjes uitzien, maarja ieder zijn eigen smaak

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sanchez schreef op 07 november 2002 @ 22:46:
als ik iets code onder windows laat ik gewoon altijd een DOS venstertje open, hoef ik ook niet over die getch(); na te denken.
ik vind een getch(); aan het einde van je code er sowieso niet echt netjes uitzien, maarja ieder zijn eigen smaak


het is alleen jammer dat je dat bij NT consoles niet in kunt stellen (als het wel kan zou ik graag weten hoe :))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
OK, ik ben weer op een nieuw probleem gestuit, ik weet alleen niet of ik daar een nieuw topic voor moet opene ? Als dat het geval is, zal ik dit beriicht editte, en een nieuw topic maken! :)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <conio.h>
#include <math>

using namespace std;

void wissel(int &, int &);

int main(void)
{
        bool isRechthoekigeDriehoek(int a, int b, int c);

        int k, l, m;
        cout << "Created by NaturalBornKiller\n" << endl;
        cout << "Kijk of een driehoek een RECHTHOEKIGE driehoek is"<< endl;
        cout << "\nGeef de lengtes k, l, m: ";
        cin >> k >> l >> m;
        cout << "k = " << k << "\nl = " << l << "\nm = " << m << endl;
        if (isRechthoekigeDriehoek(k, l, m))
                cout << "\nDe lijnen vormen een rechthoekige driehoek" << endl;
        else
                cout << "\nDe lijnen vormen GEEN rechthoekige driehoek" << endl;

        getch();

        return 0;
}

bool isRechthoekigeDriehoek(int a, int b, int c)
{
        int h;

        if (a < b) wissel(a, b);
        if (a < c) wissel (a, c);
        if (a * a == pow(b, 2.0) + c * c) return true;
        return false;
}

void wissel(int &d, int &e)
{
        int h;
        h = d; d = e; e= h;
}


Dat is wat ik tot nu toe heb weten te verzinnen, en ik wou het laten zien aan een maat van me! Dus ik denk van: Mooi, mail ik heb da EXE bestandje, kan ie ff kijken wat ik gefabriceerd heb! Mooi niet dus, maat probeert het te opene en hij er word hem verteld dat er een DLL bestand mist (dmv. een popup ofzo).

Dus ik da DLL bestandje gemailt, hij nog een keer proberen, mist ie volgende DLL bestandje! :S

Ik dacht dat je een EXE op iedere computer kon draaien met een Win OS? Of in ieder geval een OS die hetzelfde zijn (win XP dus)!

Wat doe ik verkeerd, en hoe los ik dit op ?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 07 november 2002 @ 23:28:
OK, ik ben weer op een nieuw probleem gestuit, ik weet alleen niet of ik daar een nieuw topic voor moet opene ? Als dat het geval is, zal ik dit beriicht editte, en een nieuw topic maken! :)
_/-\o_
meer mensen zouden dat moeten doen (niet voor elk probleem een nieuw topic openen bedoel ik dus) ;)
Dat is wat ik tot nu toe heb weten te verzinnen, en ik wou het laten zien aan een maat van me! Dus ik denk van: Mooi, mail ik heb da EXE bestandje, kan ie ff kijken wat ik gefabriceerd heb! Mooi niet dus, maat probeert het te opene en hij er word hem verteld dat er een DLL bestand mist (dmv. een popup ofzo).

Dus ik da DLL bestandje gemailt, hij nog een keer proberen, mist ie volgende DLL bestandje! :S

Ik dacht dat je een EXE op iedere computer kon draaien met een Win OS? Of in ieder geval een OS die hetzelfde zijn (win XP dus)!

Wat doe ik verkeerd, en hoe los ik dit op ?


ik heb geen verstand van Borland C++ Builder, maar kun je nergens instellen dat ie moet linken met een static runtime library ipv een shared library?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

.oisyn schreef op 07 november 2002 @ 23:35:
ik heb geen verstand van Borland C++ Builder, maar kun je nergens instellen dat ie moet linken met een static runtime library ipv een shared library?
NOOB! :D

Project settings -> Op linker tab 'Use dynamic RTL' uitvinken.

Voor een full standalone build moet je op de Packages tab ook 'Build with runtime packages' uitvinken.

Professionele website nodig?


Verwijderd

Topicstarter
Ja da werkt als een TREIN! Hij word alleen best groot nu (297 Kb)! Maar ja, hij doet het iig! :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 07 November 2002 @ 23:43:
Had nog geen refresh gedaan, dus message hierboven nie gelezen, ga'k nu proberen !!!
De Oisyn-schupt-Curry op IRC service was wat traagjes vandaag :Y)

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 07 November 2002 @ 23:43:
Ja da werkt als een TREIN! Hij word alleen best groot nu (297 Kb)! Maar ja, hij doet het iig! :)


http://upx.sourceforge.net/
een executable packer... scheelt over het algemeen zo'n 60% :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
UPX da werkt ook goed, file is nu nog 93.5 Kb! Thnx, .oisyn! _/-\o_

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

En nu snel in je credits zetten dat CURRY en .oisyn heel cool zijn :)

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

curry684 schreef op 08 november 2002 @ 00:19:
En nu snel in je credits zetten dat CURRY en .oisyn heel cool zijn :)
oh je bedoelt curry en .oisyn :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Hm, ik mag aannemen dat de compiler zelf ook wat optimalisaties kan uitvoeren wat betreft de grootte.
In Visual C++ wordt een simpel proggel als dit meestal zo groot als je debug info mee compiled en dat kan je dus uitschakelen.

Defines als VC_EXTRA_LEAN en WIN32_LEAN_AND_MEAN (voor VC++ dus) helpen ook doordat bepaalde weinig gebruikte libs niet mee worden gebakken in de executable.
Moet je even zoeken of er voor de Borland compiler ook zulke defines bestaan.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

WIN32_LEAN_AND_MEAN is een Win32 (windows.h) define en dus bruikbaar in Borland. Default staat deze echter al gedefinieerd in vcl.h die je in bijna ieder Borlandprogsel include.

Verder hoop ik idd dat topicstarter in Project Options op de Compiler tab op de 'Release' knop heeft gedrukt voordat ie de size checkte :)

Professionele website nodig?


  • Marc
  • Registratie: November 2001
  • Laatst online: 01-12-2021
.oisyn schreef op 07 November 2002 @ 22:57:

[...]


het is alleen jammer dat je dat bij NT consoles niet in kunt stellen (als het wel kan zou ik graag weten hoe :))
ik zou bijna trots worden op mijn win98 bakje :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

.oisyn schreef op 07 november 2002 @ 22:57:
het is alleen jammer dat je dat bij NT consoles niet in kunt stellen (als het wel kan zou ik graag weten hoe :))
Uh je klikt op het 'System Menu' icoontje links bovenin, en daarin zit het menupunt 'Properties'?

Of bedoel je iets anders? :)

Professionele website nodig?


Verwijderd

Topicstarter
OK, nieuw probleem:

DOS venster sluit, na eenmaal uitvoeren van wat ie moet doen! (kijken of een 3hoek, een rechthoekige 3hoek is, ben nu eenmaal een wiskundig persoon) :)

Hoe kan ik dit voorkomen ?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-08 12:42

Janoz

Moderator Devschuur®

!litemod

In plaats van je programma te runnen kun je eigenlijk beter gewoon een console openen. Naar de juiste directory gaan en daar naamapp.exe in te tikken. Op die manier wordt het window niet gesloten maar krijg je weer netjes een prompt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

[nohtml]
curry684 schreef op 10 november 2002 @ 13:57:
[...]

Uh je klikt op het 'System Menu' icoontje links bovenin, en daarin zit het menupunt 'Properties'?
joh :+
er staat alleen nergens een optie bij dat ie het venstertje OPEN moet houden nadat het programma is afgesloten :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Janoz schreef op 10 November 2002 @ 20:15:
In plaats van je programma te runnen kun je eigenlijk beter gewoon een console openen. Naar de juiste directory gaan en daar naamapp.exe in te tikken. Op die manier wordt het window niet gesloten maar krijg je weer netjes een prompt.
Ghmm, werkt opzich wel, maar niet echt handig!

Wat ik eigenlijk wil is, dat progsel gewoon opnieuw runt! Dus ik wil geen prompt maar het progsel gewoon nog een keer (oneindig, totdat ik afsluit)!

Het is nu zo dat als ik me progsel opstart, en dan waardes invoer en comp rekent wat uit, geeft een waarde (in dit geval of het een REVHTHOEKIGE 3hoek is ja of nee) en zodra ik op een toets druk sluit ie af! :S Dat zou ik dus graag anders zien!


Is er geen andere oplossing voor ?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 26-08 07:51

mulder

ik spuug op het trottoir

Je programma niet afsluiten lijkt me.

Pseudo:
code:
1
2
3
4
5
6
7
8
9
ExitKeyPressed = false
while !ExitKeyPressed
{
    getKey
    if (key == 'esc')
        ExitKeyPressed= true
    else
        doSomethingElse 
}

oogjes open, snaveltjes dicht


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
.oisyn schreef op 10 november 2002 @ 20:16:
[nohtml]
[...]


joh :+
er staat alleen nergens een optie bij dat ie het venstertje OPEN moet houden nadat het programma is afgesloten :)
En wat zou je dan in dat venstertje moeten zien? C:\ of zo? Zonder dat je een command.com hebt gestart?

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

MSalters schreef op 10 november 2002 @ 22:53:
[...]

En wat zou je dan in dat venstertje moeten zien? C:\ of zo? Zonder dat je een command.com hebt gestart?


het bekende "Dit programma is beeindigd, druk op een toets om dit venster te sluiten", wat ook in win9x zit

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Oud topicje, maar ik dacht misschien iets bij te kunnen dragen :).

Als anti-sluit-venster-oplossing werkt voor mij (of zeg ik nou iets heel doms?)
code:
1
2
3
4
5
6
int main(int argc, char* argv[])
{
        system("PAUSE");
        return 0;

}

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 26-08 16:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het ging juist om een oplossing zonder je code daarvoor hoeven aan te passen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

In dat geval heb ik niks gezegd :)
Maar goed, misschien handig voor iemand die de search nog eens raadpleegt ofzo.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 24-08 23:08
Verwijderd schreef op 07 januari 2003 @ 16:50:
In dat geval heb ik niks gezegd :)
Maar goed, misschien handig voor iemand die de search nog eens raadpleegt ofzo.
Dan is getch() nog meer portable, maar ok. Onder Windows zou je het inderdaad zo op kunnen lossen (groot voordeel is natuurlijk dat je de gelokaliseerde prompt van Windows krijgt).
Pagina: 1