abonnement Unibet Coolblue Bitvavo
  zaterdag 6 maart 2010 @ 19:30:56 #1
254493 Trollface.
gr rob fruithof, groningencity
pi_78823761

Nu mét gratis web-support!

Als je vragen hebt over C of C++, dan zit je hier goed met een (hopelijk later grote) kliek guru's.
Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt.

En onthoud: lieve modjes maken dit topic centraal!

Vorige delen:

Geen!

FAQ

Ik wil beginnen met C/C++, wat voor IDE is het beste voor mij?
Dat ligt eraan. Als je alléén voor MS Windows wilt gaan developen, is Visual Studio de beste optie. Deze kun je bovendien als je student bent via Microsoft DreamSpark of MSDN Academic Alliance gratis downloaden. :)
Wil je echter cross-platform (dat wil zeggen: voor b.v. Windows én Linux, of Linux én Mac) gaan developen, dan zijn Dev-C++ en Code::Blocks de beste optie voor C++. Eclipse (ook voor C) en NetBeans zijn ook goede keuzes, alleen zijn deze meer op Java gericht. Een ander IDE, van Nokia's hand, is Qt Creator. Dit IDE maakt gebruik van het Qt-framework, een set van functies, types, variabelen etc. om programmeren makkelijker te maken. Dit framework is cross-platform.

Hoe gebruik ik x/wat houdt y in?
Stop! Voor vragen hoe je bepaalde ingebouwde functies, types of classes gebruikt kun je de C referentie of de C++ referentie gebruiken. Hier staat alles in wat je nodig hebt.

Wat is het verschil tussen C en C++?
C++ is, eenvoudig gezegd, een nieuwere versie van C (vandaar ook de naam, C++ wil zeggen: verhoog de waarde van C met 1). Het biedt onder andere betere klasse-ondersteuning en verschillende nieuwe types, zoals vectors en maps, om er maar een paar te noemen.
Als je wilt beginnen met leren, is C++ beter, want C wordt eigenlijk niet vaak meer gebruikt.

Wat is het Windows SDK?
Het Windows SDK is een set van functies, gemaakt door Microsoft, om het programmeren voor Windows te vereenvoudigen.
Als je ervoor kiest het Windows SDK te gebruiken, houd er dan rekening mee dat je applicatie Windows-only wordt!
Je kunt de laatste versie hier vinden ter download.

Handige links:

Referenties en tutorials:
  • Leer C en/of C++ (engels)
  • Leer programmeren met het Windows SDK (engels)
  • Info over het Windows SDK (engels)

    Deze OP vind je hier.

    [ Bericht 1% gewijzigd door Trollface. op 07-03-2010 13:35:32 ]
  • ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_78826032
    tvp
    Redacted
      Forum Admin / Grootste Aanwinst 2022 zaterdag 6 maart 2010 @ 20:42:24 #3
    8731 crew  Netsplitter
    #jesuisMasi
    pi_78826128
    C# niet?
    OxygeneFRL-vrijdag 8 mei 2020 @ 08:52:59: Ik had een pleuris hekel aan je maar nu ik weet dat je tegen een vuurwerkverbod ben, hou ik van je.
      zaterdag 6 maart 2010 @ 20:43:58 #4
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_78826190
    quote:
    Op zaterdag 6 maart 2010 20:42 schreef Netsplitter het volgende:
    C# niet?
    C# is toch wel fundamenteel anders dan C of C++... w.m.b. kun je die vragen gewoon hier stellen, maar of je antwoord krijgt is een tweede

    Als we wat C#-guru's hebben kan dit C(++/#) voor dummies worden w.m.b.

    [ Bericht 15% gewijzigd door Trollface. op 06-03-2010 20:51:58 ]
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_78827049
    Oh wacht er is een heel dev subfora. Laat maar.

    Lijkt me trouwens niet handig als je die 2 door elkaar haalt. C# is heel anders dan C(++).

    [ Bericht 48% gewijzigd door Fortitude op 06-03-2010 21:14:31 ]
    pi_78827606
    Dat. Je kunt dan beter C# en VB.net samenvatten in een .net-topic.
    pi_78827661
    quote:
    Op zaterdag 6 maart 2010 20:43 schreef Trollface. het volgende:

    [..]

    C# is toch wel fundamenteel anders dan C of C++... w.m.b. kun je die vragen gewoon hier stellen, maar of je antwoord krijgt is een tweede

    Als we wat C#-guru's hebben kan dit C(++/#) voor dummies worden w.m.b.
    Objective C.
      zaterdag 6 maart 2010 @ 22:36:08 #8
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_78830239
    quote:
    Op zaterdag 6 maart 2010 21:24 schreef Qunix het volgende:

    [..]

    Objective C.
    Als wat mensen hier (gaan) zitten die er verstand van hebben kan dat wat mij betreft toegevoegd worden, C#/VB.NET kan inderdaad beter in een apart topic.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_78841994
    Potentieel interessant topic.

    Een aardige gratis ide, zonder al te veel poespas en bloat, voor windows, inclusief mingw compiler: Link

    Een erg goede en gratis IDE, voor zowel windows/linux, gericht op het ontwikkelen van software met het QT framework (o.a. google earth maakt hier gebruik van)
    QTCreator

    Het QT Framework verlost je van het broddelwerk genaamd "windows api" en is compleet object georienteerd. Een aanrader voor iedereen die serieus portable software wil schrijven.

    Verder, voor iedereen die écht C wil leren, is er maar één boek wat er toe doet: "The C programming language" van Kernighan en Ritchie, de bedenkers van C. Want in tegenstelling tot wat er in de o.p. staat wordt C nog wel veel gebruikt en is het niet de voorganger van C++
      zondag 7 maart 2010 @ 13:32:22 #10
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_78844861
    quote:
    Op zondag 7 maart 2010 11:56 schreef LucasHulshof het volgende:
    Want in tegenstelling tot wat er in de o.p. staat wordt C nog wel veel gebruikt en is het niet de voorganger van C++
    Misschien is voorganger idd wat slecht verwoord, maar volgens mij wordt C niet echt vaak meer gebruikt.

    Dev-C++ stond al in de OP, ik heb QT toegevoegd.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
      zondag 7 maart 2010 @ 13:36:22 #11
    118585 Crutch
    Filantroop || Taalzwengel
    pi_78845017
    Dikke vette TVP.

    Thanks Trollface.
    Je moeder is een hamster
      zondag 7 maart 2010 @ 13:41:15 #12
    118585 Crutch
    Filantroop || Taalzwengel
    pi_78845200
    Btw, C++ is toch gewoon next leveL C? Grootste toevoeging van C++ is Object Oriented Programming.
    Dus eigenlijk zou C++/C# niet zo raar zijn voor dit topic tenzij het verschil tussen C++ en C# té groot is.
    Je moeder is een hamster
      zondag 7 maart 2010 @ 13:45:30 #13
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_78845357
    quote:
    Op zondag 7 maart 2010 13:41 schreef Crutch het volgende:
    Btw, C++ is toch gewoon next leveL C? Grootste toevoeging van C++ is Object Oriented Programming.
    Dus eigenlijk zou C++/C# niet zo raar zijn voor dit topic tenzij het verschil tussen C++ en C# té groot is.
    C# is écht fundamenteel anders dan C++, C# is een samengooisel van C++ en Java, en het lijkt daarbij meer op Java imho. Een algemeen .NET-topic is hier handiger voor, denk ik.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_78847173
    Ah zal eens gaan meelezen..

    Programmeer in c++ en c#
    "Wie niet gelooft in wonderen, is geen realist."
      zondag 7 maart 2010 @ 14:39:17 #15
    118585 Crutch
    Filantroop || Taalzwengel
    pi_78847369
    quote:
    Op zondag 7 maart 2010 14:33 schreef progje het volgende:
    Ah zal eens gaan meelezen..

    Programmeer in c++ en c#
    Wat maak je zoal?
    Je moeder is een hamster
    pi_78847441
    tvp
    pi_78847442
    quote:
    Op zondag 7 maart 2010 14:39 schreef Crutch het volgende:

    [..]

    Wat maak je zoal?
    Ik werk aan ons eigen product, waarover ik op FOK verder maar niet zoveel ga vertellen
    De core van dit product is geheel C/C++

    Verder hebben we ook een CMS voor dit product, dit is ontwikkeld in C#
    Verder hebben we natuurlijk een API voor het product, ook geheel C#

    Maar ik werk voornamelijk aan de core (gelukkig)

    Ik vind C# / ASP.Net programmeren nogal uber saai
    "Wie niet gelooft in wonderen, is geen realist."
    pi_78848671
    tvp.
    Voor C gebruik ik Pelles C, superlicht en maakt erg kleine executables in Windows.
    Dan nog GTK+ voor de GUI en je kan zo beginnen.
    pi_78864271
    quote:
    Op zondag 7 maart 2010 13:32 schreef Trollface. het volgende:

    [..]

    Misschien is voorganger idd wat slecht verwoord, maar volgens mij wordt C niet echt vaak meer gebruikt.

    Dev-C++ stond al in de OP, ik heb QT toegevoegd.
    Laat de Gordon Ramsay van de Unix wereld (yeah i'm talking about you Linus Torvalds ) het maar niet horen. De Linux kernel bestaat al uit een paar tiental miljoen lijnen C-code.
    pi_78864498
    quote:
    Op zondag 7 maart 2010 21:42 schreef ErictheSwift het volgende:

    [..]

    Laat de Gordon Ramsay van de Unix wereld (yeah i'm talking about you Linus Torvalds [ afbeelding ] ) het maar niet horen. De Linux kernel bestaat al uit een paar tiental miljoen lijnen C-code.
    Ja maar een kernel is ook niet bepaald het meest standaard stuk code.
      zondag 7 maart 2010 @ 21:45:50 #21
    280298 Hameren_Yzer
    mept moraalridders
    pi_78864521
    cout << "TVP";
    pi_78865282
    TVP!
    [b]Op donderdag 4 februari 2010 21:52 schreef naatje_1 het volgende:[/b]
    Wukl schrijf je met een L en niet met een I
    Zo, die zit, en die verwachte je nie
    pi_78870254
    1void main() {char _[4](_[(((0[_]=035<<2)+1)[_-0[_]]=0[_]|2)-0[_]]=_[0]-4)-(_[1]-011))[_]=0[_]-1[_]^~1;std::cout<<_;}

      zondag 7 maart 2010 @ 23:42:04 #24
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_78870979
    quote:
    Op zondag 7 maart 2010 23:26 schreef Cruise.Elroy het volgende:

    [ code verwijderd ]

    void main? Echt waar?
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_78877172
    quote:
    Op zondag 7 maart 2010 23:42 schreef Trollface. het volgende:

    [..]

    void main? Echt waar?
      maandag 8 maart 2010 @ 11:03:14 #26
    74548 Jo0Lz
    Lick the box!
    pi_78881090
    Centraal.
    Yes we can! | I didn't fail, it's just postponed success.
    pi_78895001
    Volgens mij zijn er bijna geen dummies in C++, die zijn slim en gaan voor een taal als C#
    pi_78895043
    quote:
    Op maandag 8 maart 2010 16:40 schreef Cruise.Elroy het volgende:
    Volgens mij zijn er bijna geen dummies in C++, die zijn slim en gaan voor een taal als C#
    Onzin, in de wereld van hardcore berekeningen en algoritmen is C(++) ongeevenaard.
    pi_78896307
    quote:
    Op maandag 8 maart 2010 16:41 schreef Intrepidity het volgende:

    [..]

    Onzin, in de wereld van hardcore berekeningen en algoritmen is C(++) ongeevenaard.
    Begrijpend lezen is blijkbaar niet aan iedereen besteed.
    pi_78896331
    quote:
    Op maandag 8 maart 2010 17:12 schreef Cruise.Elroy het volgende:

    [..]

    Begrijpend lezen is blijkbaar niet aan iedereen besteed.
    Dat blijkt ja
      vrijdag 12 maart 2010 @ 16:10:22 #31
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_79065525
    quote:
    Op maandag 8 maart 2010 16:40 schreef Cruise.Elroy het volgende:
    Volgens mij zijn er bijna geen dummies in C++, die zijn slim en gaan voor een taal als C#
    Hoezo is voor C# gaan slim?
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_79065789
    quote:
    Op vrijdag 12 maart 2010 16:10 schreef Trollface. het volgende:

    [..]

    Hoezo is voor C# gaan slim?
    Volgens mij wordt dat nou juist niet expliciet bedoeld.
    "Wie niet gelooft in wonderen, is geen realist."
      vrijdag 12 maart 2010 @ 16:20:00 #33
    118585 Crutch
    Filantroop || Taalzwengel
    pi_79065918
    quote:
    Op vrijdag 12 maart 2010 16:16 schreef progje het volgende:

    [..]

    Volgens mij wordt dat nou juist niet expliciet bedoeld.
    Als je goed leest wel.

    Verklaring:

    Na een n00b geweest te zijn in C++ hebben ze besloten om voor C# te gaan.
    Oftewel; ze zijn nooit verdergegaan in C++
    En dat wordt dan gezien als slimme keuze.
    Je moeder is een hamster
      vrijdag 12 maart 2010 @ 16:21:01 #34
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_79065955
    quote:
    Op vrijdag 12 maart 2010 16:20 schreef Crutch het volgende:

    [..]

    Als je goed leest wel.

    Verklaring:

    Na een n00b geweest te zijn in C++ hebben ze besloten om voor C# te gaan.
    Oftewel; ze zijn nooit verdergegaan in C++
    En dat wordt dan gezien als slimme keuze.
    Pfffffffffff, C#
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
      vrijdag 12 maart 2010 @ 16:22:35 #35
    56176 Catch22-
    Ben je Blind?!
    pi_79066025
    C# is wel makkelijk om het in de vingers te krijgen. Dan kan je altijd nog weer overgaan naar C++/C
    Heel veel groetjes, Catch22
    En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
    Met GHB nooit meer nee
    Storneren een optie?
      vrijdag 12 maart 2010 @ 16:24:38 #36
    118585 Crutch
    Filantroop || Taalzwengel
    pi_79066100
    quote:
    Op vrijdag 12 maart 2010 16:21 schreef Trollface. het volgende:

    [..]

    Pfffffffffff, C#
    Ik ben neutraal daarin. Mocht je namelijk iets Windows-only willen gaan programmeren dat zit je met C# wel wat beter.

    Java FTW!
    Je moeder is een hamster
    pi_79066183
    Ik vind echt dat C# en C++ geen drol met elkaar te maken hebben
    Toen laatst een van mijn C# programmeurs wat C++ mocht gaan doen, had hij bijvoorbeeld toch behoorlijk wat moeite met pointers

    C# kan heel handig zijn voor bijvoorbeeld een website e.d.
    Of een doodsimpele applicatie of zo.

    Maar als je echt power en controle wil moet je gewoon C/C++ gebruiken

    Bij het bedrijf waar ik werk, hebben we ons eigen product, compleet C/C++

    Maar de API, de management suite (web) e.d. zijn allemaal gemaakt in C#
    Omdat daarvoor C# prima geschikt is.
    "Wie niet gelooft in wonderen, is geen realist."
      vrijdag 12 maart 2010 @ 16:39:11 #38
    56176 Catch22-
    Ben je Blind?!
    pi_79066629
    Ik maak alleen maar webbased sites en applicaties... Dus dan C# ruim voldoende.
    Heel veel groetjes, Catch22
    En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
    Met GHB nooit meer nee
    Storneren een optie?
      vrijdag 12 maart 2010 @ 16:48:28 #39
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_79067003
    quote:
    Op vrijdag 12 maart 2010 16:39 schreef Catch22- het volgende:
    Ik maak alleen maar webbased sites en applicaties... Dus dan C# ruim voldoende.
    Daar gebruik ik PHP voor.

    Anyways, laten we dit niet in een C++ vs. C#-topic omtoveren, hoewel het wel een interessant onderwerp is natuurlijk.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
      vrijdag 12 maart 2010 @ 16:51:31 #40
    56176 Catch22-
    Ben je Blind?!
    pi_79067110
    Het heeft beiden zijn voor- en nadelen natuurlijk.


    Ik vind persoonlijk ons gebruikte framework erg fijn, zeker icm VisualStudio
    Heel veel groetjes, Catch22
    En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
    Met GHB nooit meer nee
    Storneren een optie?
    pi_79072129
    Iemand anders die hier Objective-C (Cocoa) doet?
    pi_79085546
    Ik ben zelf gek op C++, het is precies de juiste abstractie waarin ik me thuis voel. Gelukkig gebruiken we in mijn industrie eigenlijk niets anders. C# voor tools zou wel handig zijn denk ik, maar op dit moment ook allemaal nog in C++
      zaterdag 13 maart 2010 @ 18:30:50 #43
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_79103025
    Ik heb een probleem waar ik zelf niet uit kom:

    Ik gebruik een klasse waarbij een functie zit die een callback als volgt neemt:
    1klasse::hookCommand(char*, int(*)());


    Als ik deze aanroep met een functie werkt het gewoon:
    1
    2
    3
    4
    5
    int test() {
    return 5;
    }

    deKlasse.hookCommand("bla", &test);


    Probeer ik deze echter met een klassemethode aan te roepen:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class Class2 {
    public:
    klasse deKlasse;

    Class2(): {}

    int klasseTest() { 
    return 3;
    }

    void hook() {
    deKlasse.hookCommand("bla", &klasseTest);
    }

    }

    Error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static function to form a pointer to member function. Say `&Class2::klasseTest`.

    Dan probeer ik het zoals de compiler me zegt:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class Class2 {
    public:
    klasse deKlasse;

    Class2(): {}

    int klasseTest() { 
    return 3;
    }

    void hook() {
    deKlasse.hookCommand("bla", &Class2::klasseTest);
    }

    }

    No matching function call for klasse::hookCommand(char*, int(Class2::*)());
    Candidates are: klasse::hookCommand(char*, int(*)());


    Weet iemand hoe ik dit kan oplossen zonder de basisklasse aan te passen?
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_79107293
    Een klassemethode is heel iets anders dan een "losse" methode met dezelfde return value en parameters, er wordt namelijk nog een this pointer meegegeven bij de aanroep, anders kan de methode natuurlijk nooit uitvogelen waar hij zijn data vandaan moet halen.

    Het is een fout die bijna iedereen wel een keertje maakt, en het is eigenlijk een denkfout: bedenk dat voor de pointer-logica elke instantie van een klasse zijn eigen functie (methode) heeft, tenzij de functie static is, dan is het gedeeld tussen alle instanties.
    Member-functies/methodes zijn dan ook niet aan te wijzen met een functiepointer.

    twee oplossingen:

    1) maak een abstracte klasse en geef pointers door naar die klasse ipv functiepointers
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class AbstractClass
    {
     int klasseTest()  = 0;
    }

    class Class2 : public AbstractClass
    {
      public:
      klasse deKlasse;
      Class2(): {}
      int klasseTest()  {return 3;}
    }

    void hook() {
    deKlasse.hookCommand("bla", Abstract_Class_instantie);
    }


    2) maak de funtie static en geef het een pointer naar de instantie mee.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Class2
    {
      public:
      klasse deKlasse;
      Class2(): {}
      static int klasseTest(Class2* pInstance)  {return 3;}
    }
    void hook() {
    deKlasse.hookCommand("bla", Class2::klasseTest(Class_Instantie));
    }


    en als ik je een tip mag geven: maak je voorbeeldcode duidelijker: klasse, DeKlasse, Class2, klasseTest, dat helpt niet echt.

    [ Bericht 31% gewijzigd door Cruise.Elroy op 13-03-2010 20:50:52 ]
      zaterdag 13 maart 2010 @ 21:14:17 #45
    56176 Catch22-
    Ben je Blind?!
    pi_79108490
    Daar verval je snel in als je een Proof of Concept/Testje schrijft maar kheb ook wel ondervonden dat je het gelijk duidelijk moet doen, anders verdwaal je gauw
    Heel veel groetjes, Catch22
    En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
    Met GHB nooit meer nee
    Storneren een optie?
    pi_79109237
    quote:
    Op zaterdag 13 maart 2010 21:14 schreef Catch22- het volgende:
    Daar verval je snel in als je een Proof of Concept/Testje schrijft maar kheb ook wel ondervonden dat je het gelijk duidelijk moet doen, anders verdwaal je gauw
    Vooral omdat er zo ontzettende veel notaties rondzwerven kan ik iig iedereen aanraden om namen te nemen die het (meta)type goed aangeven.
      zondag 28 maart 2010 @ 13:57:52 #47
    280298 Hameren_Yzer
    mept moraalridders
    pi_79668586
    Kent iemand iets zoals getchar() maar dan zonder dat er een enter nodig is
    pi_79672191
    quote:
    Op zondag 28 maart 2010 13:57 schreef Hameren_Yzer het volgende:
    Kent iemand iets zoals getchar() maar dan zonder dat er een enter nodig is
    Het standaard invoersysteem van C++ heeft daar geen standaard oplossing voor.
    Wat je kan proberen zijn de functies _kbhit() en _getch()
    Ze zitten in de header conio.h.

    Dit zijn oude functies uit het DOS/POSIX en worden niet meer goed ondersteund dus let daar wel mee op.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    int main()
    {

       int pointer = 0;
       char buffer[10]; 
       do
       {
          while(_kbhit()) // toets ingedrukt?
          {
             int key = _getch(); // toets ophalen
             if (key == '\r') // enter gedrukt
             {
                buffer[pointer] = 0;
             }
             else // "normale" toets ingedrukt
             {
                buffer[pointer++] = (char) key;
                std::cout << '*';
             }
          }
       } while(buffer[pointer]);
       std::cout << "\nJe wachtwoord is " << buffer << '\n';

    }
      zondag 28 maart 2010 @ 16:08:03 #49
    118413 Dickbride
    Hilarisch. Nee, echt.
    pi_79672427
    quote:
    Op maandag 8 maart 2010 16:41 schreef Intrepidity het volgende:

    [..]

    Onzin, in de wereld van hardcore berekeningen en algoritmen is C(++) ongeevenaard.
    offtopic: maar daarvoor wordt juist weer FORTRAN gebruikt
    Cheeex with deeeex: hoeiboei! -Sandstorm- schreef: Koop je toch een spiraal, kut. Biogarde schreef: Moet het topic weer open? Foto's van je kut en tieten naar -mailadres weg-
      zondag 18 april 2010 @ 01:25:57 #50
    189216 netolk
    maar dan andersom
    pi_80435935
    quote:
    Op zondag 28 maart 2010 16:08 schreef Dickbride het volgende:

    [..]

    offtopic: maar daarvoor wordt juist weer FORTRAN gebruikt
    Ja en elke ander C based programeer taal... dus uiteindelijk gewoon allemaal asambly code
    Beware of the Raping Zebra's
    pi_80439044
    quote:
    Op zondag 18 april 2010 01:25 schreef netolk het volgende:

    [..]

    Ja en elke ander C based programeer taal... dus uiteindelijk gewoon allemaal asambly code
    Er worden in de uithoeken van wetenschappelijk onderzoek vaak nog "rare" talen gebruikt. Fortran is nog steeds populairder dan C(++) in sommige gebieden. De eerste adventure game ADVENT was in Fortran geschreven
      zondag 18 april 2010 @ 12:02:46 #52
    189216 netolk
    maar dan andersom
    pi_80441222
    quote:
    Op zondag 18 april 2010 10:25 schreef Cruise.Elroy het volgende:

    [..]

    Er worden in de uithoeken van wetenschappelijk onderzoek vaak nog "rare" talen gebruikt. Fortran is nog steeds populairder dan C(++) in sommige gebieden. De eerste adventure game ADVENT was in Fortran geschreven
    Windows en Mac zijn voor het grootste deel in C en C++ geschreven...
    Beware of the Raping Zebra's
      zondag 18 april 2010 @ 12:05:30 #53
    189216 netolk
    maar dan andersom
    pi_80441277
    Ik ben nu een beetje aan het klooien met pointers in C++ maar het werkt niet zo als ik zou verwachten..
    dit is de 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
    #include <iostream>

    struct Test{
       int a;
       Test(){a=0;}
       int get(){return a;}
    };

    struct Test2{
       Test *myPointer;
       
       Test2(Test test){myPointer = &test;}
       int get(){return (*myPointer).a;}
       int get2(){return myPointer->a;}
       ~Test2(){delete myPointer; myPointer = 0;}
    };

    int main(){
       Test myTest;
       Test2 Test2(myTest);
       myTest.a = 9;
       
       std::cout << myTest.get() << '\t' << Test2.get() << '\n';
       std::cout << myTest.a << '\t' << Test2.myPointer->a << '\n';
       
       int a = 3;
       int *b;
       b = &a;
       *b = 8;
       
       std::cout << a << '\t' << *b << '\n';
       
       return 0;
    }

    de output is:
    1
    2
    3
    9       0
    9       9
    8       8



    en ik had nog een vraag waarom kan in de onderstaande code het bovenste wel en het onderste niet? dit zou toch het zelfde moeten zijn?
    1
    2
    std::cout << myTest.a << '\t' << Test2.myPointer->a << '\n';
    std::cout << myTest.a << '\t' << Test2.(*myPointer).a << '\n';

    bij de onderste code geeft ie out of scope error...
    Mvg. netolk
    Beware of the Raping Zebra's
      zondag 18 april 2010 @ 12:10:30 #54
    189216 netolk
    maar dan andersom
    pi_80441378
    quote:
    Op zondag 28 maart 2010 16:01 schreef Cruise.Elroy het volgende:

    [..]

    Het standaard invoersysteem van C++ heeft daar geen standaard oplossing voor.
    Wat je kan proberen zijn de functies _kbhit() en _getch()
    Ze zitten in de header conio.h.

    Dit zijn oude functies uit het DOS/POSIX en worden niet meer goed ondersteund dus let daar wel mee op.
    [ code verwijderd ]


    je kan denk ik beter zoiets gebruiken:

    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
    44
    45
    #include <windows.h>
    char GetKey()
    {
       // get standard console handle
       HANDLE myHandle = ::GetStdHandle(STD_INPUT_HANDLE);

       // read input until a key has been pressed
       INPUT_RECORD myEvent[1];
       DWORD myNumberOfEvents;

       do
       {
          // read input
          ::ReadConsoleInput(myHandle, myEvent, 1, &myNumberOfEvents);
       } while ((myEvent[0].EventType != KEY_EVENT) ||
          (myEvent[0].Event.KeyEvent.bKeyDown != TRUE));

       // return ASCII code
       return myEvent[0].Event.KeyEvent.uChar.AsciiChar;
    }

    /**
     * Waits for a key to be pressed and returns the key's virtual key code.
     *
     * @returns   the virtual key code of the pressed key
     */
    WORD GetVirtualKey()
    {
       // get standard console handle
       HANDLE myHandle = ::GetStdHandle(STD_INPUT_HANDLE);

       // read input until a key has been pressed
       INPUT_RECORD myEvent[1];
       DWORD myNumberOfEvents;

       do
       {
          // read input
          ::ReadConsoleInput(myHandle, myEvent, 1, &myNumberOfEvents);
       } while ((myEvent[0].EventType != KEY_EVENT) ||
          (myEvent[0].Event.KeyEvent.bKeyDown != TRUE));

       // return ASCII code
       return myEvent[0].Event.KeyEvent.wVirtualKeyCode;
    }

    dit werkt dan wel alleen op windows
    Beware of the Raping Zebra's
    pi_80441382
    quote:
    Op zondag 18 april 2010 12:02 schreef netolk het volgende:

    [..]

    Windows en Mac zijn voor het grootste deel in C en C++ geschreven...
    Ik neem aan dat je OSX bedoelt.
    Stiekem is OSX in ADA geschreven, maar dat weten veel mensen niet.
    pi_80441404
    quote:
    Op zondag 18 april 2010 12:10 schreef netolk het volgende:

    [..]

    je kan denk ik beter zoiets gebruiken:
    [ code verwijderd ]

    dit werkt dan wel alleen op windows
    Behalve dat mijn oplossing maar 1 regel code is. En nog beter portable ook.
      zondag 18 april 2010 @ 12:13:05 #57
    189216 netolk
    maar dan andersom
    pi_80441430
    quote:
    Op zondag 18 april 2010 12:11 schreef Cruise.Elroy het volgende:

    [..]

    Behalve dat mijn oplossing maar 1 regel code is. En nog beter portable ook.
    je zegt zelf dat het niet goed ondersteund word...
    Beware of the Raping Zebra's
    pi_80441433
    quote:
    Op zondag 18 april 2010 12:05 schreef netolk het volgende:
    Ik ben nu een beetje aan het klooien met pointers in C++ maar het werkt niet zo als ik zou verwachten..
    dit is de code:
    [ code verwijderd ]

    de output is:
    [ code verwijderd ]

    en ik had nog een vraag waarom kan in de onderstaande code het bovenste wel en het onderste niet? dit zou toch het zelfde moeten zijn?
    [ code verwijderd ]

    bij de onderste code geeft ie out of scope error...
    Mvg. netolk
    1
    2
    3
    4
    5
    6
    7
    8
    struct Test2{
       Test *myPointer;
       
       Test2(Test test){myPointer = &test;}
       int get(){return (*myPointer).a;}
       int get2(){return myPointer->a;}
       ~Test2(){delete myPointer; myPointer = 0;}
    };


    Je code is niet echt makkelijk te lezen, maar als ik het even snel doorlees:
    In de constructor Test2:Test2() geef je by value een struct mee: myPointer refereert dus naar de tijdelijke parameter Test test.

    Waarschijnlijk wil je hebben:
    1   Test2(Test* test){myPointer = test;}


    of om met references te werken (maar dat zou ik niet doen totdat je pointers echt snapt):
    1   Test2(Test& test){myPointer = &test;}
    pi_80441527
    quote:
    Op zondag 18 april 2010 12:13 schreef netolk het volgende:

    [..]

    je zegt zelf dat het niet goed ondersteund word...
    Niet goed, maar beter dan een spagetti aan windows API calls

    edit: het zijn geen api calls. Je hebt dus gelijk
    Mijn code werkt onder *de meeste* windows compilers en waarschijnlijk ook aan de praat te krijgen onder Linux, maar niet makkelijk.
      zondag 18 april 2010 @ 12:19:34 #60
    189216 netolk
    maar dan andersom
    pi_80441576
    quote:
    Op zondag 18 april 2010 12:10 schreef Cruise.Elroy het volgende:

    [..]

    Ik neem aan dat je OSX bedoelt.
    Stiekem is OSX in ADA geschreven, maar dat weten veel mensen niet.
    wel raar dat Appel zelf wel zegt dat het framework bijvoorbeeld voor een groot deel in objective-C is geschreven en andere dingen ook in C/C++ geschreven zijn...
    Beware of the Raping Zebra's
    pi_80441675
    quote:
    Op zondag 18 april 2010 12:19 schreef netolk het volgende:

    [..]

    wel raar dat Appel zelf wel zegt dat het framework bijvoorbeeld voor een groot deel in objective-C is geschreven en andere dingen ook in C/C++ geschreven zijn...
    Het was een grapje.
    ADA is een draak van een taal die door de US Department of Defense verplicht was gesteld ergens in de 80 tot aan eind 90s.
      zondag 18 april 2010 @ 12:29:11 #62
    189216 netolk
    maar dan andersom
    pi_80441803
    11      Test2(Test& test){myPointer = &test;}

    dus als ik het goed begrijp dan refereert test nu aan een Test en myPointer checkt dan dus de locatie van test die dan weer naar de meegegeven Test in de constructor wijst?

    Test voorbeeld;
    Test2 voorbeeld2(voorbeeld);

    myPointer -> test -> voorbeeld

    of klopt dit niet?
    Beware of the Raping Zebra's
      zondag 18 april 2010 @ 12:29:29 #63
    189216 netolk
    maar dan andersom
    pi_80441816
    quote:
    Op zondag 18 april 2010 12:24 schreef Cruise.Elroy het volgende:

    [..]

    Het was een grapje.
    ADA is een draak van een taal die door de US Department of Defense verplicht was gesteld ergens in de 80 tot aan eind 90s.
    dacht al
    Beware of the Raping Zebra's
    pi_80442089
    quote:
    Op zondag 18 april 2010 12:29 schreef netolk het volgende:

    [ code verwijderd ]

    dus als ik het goed begrijp dan refereert test nu aan een Test en myPointer checkt dan dus de locatie van test die dan weer naar de meegegeven Test in de constructor wijst?

    Test voorbeeld;
    Test2 voorbeeld2(voorbeeld);

    myPointer -> test -> voorbeeld

    of klopt dit niet?
    Ongeveer, het gaat gewoon
    myPointer -> voorbeeld

    Als je de locatie van een reference opvraagt krijg je gewoon de locatie terug van het object.
    Een reference is een soort "onzichtbare" pointer, het gedraagt zich gewoon als een object.
      zondag 18 april 2010 @ 12:45:01 #65
    189216 netolk
    maar dan andersom
    pi_80442186
    chill, ik wist dat het moest kunnen maar niet zo snel hoe

    bedankt Cruise.Elroy het werkt nu
    Beware of the Raping Zebra's
    pi_80447097
    tvp.
    pi_81213661
    Hallo
    Sinds een tijdje ben ik ook bezig met c++ leren, en de taal bevalt me eigenlijk wel . Ik heb visual c++ van microsoft gedownload en ben nu een beetje bezig met de taal leren. Is dit een goede keus? (Ik hoorde ergens dat c++ dé taal was om te programmeren in windows, of spellen te programmeren, dus het leek me wel ok, maar ik hoorde ergens anders weer dat c# tegenwoordig meer gebruikt is...)
    Finally, someone let me out of my cage
    pi_81214536
    Er is denk ik geen 'dé' taal voor een bepaald platform, dat hangt compleet van het project en de eisen en dergelijke af. Voor spellen is C++ inderdaad veelgebruikt op Windows in combinatie met Direct3D en dergelijke, hoewel C# op dat gebied ook prima werkt. C# wordt dan weer meer gebruikt voor 'gewone' windows-applicaties, webapplicaties (icm ASP.net) en RIA's (icm Silverlight)
    Ik denk over het algemeen dat je met C# een breder pallet aan applicaties kunt bouwen met dezelfe kennis en moeite (een windows-applicatie bouwen gaat met winforms/wpf nou eenmaal sneller als in C++ met de WIn32-API).
    pi_81215333
    quote:
    Op zondag 9 mei 2010 15:36 schreef Intrepidity het volgende:
    Er is denk ik geen 'dé' taal voor een bepaald platform, dat hangt compleet van het project en de eisen en dergelijke af. Voor spellen is C++ inderdaad veelgebruikt op Windows in combinatie met Direct3D en dergelijke, hoewel C# op dat gebied ook prima werkt. C# wordt dan weer meer gebruikt voor 'gewone' windows-applicaties, webapplicaties (icm ASP.net) en RIA's (icm Silverlight)
    Ik denk over het algemeen dat je met C# een breder pallet aan applicaties kunt bouwen met dezelfe kennis en moeite (een windows-applicatie bouwen gaat met winforms/wpf nou eenmaal sneller als in C++ met de WIn32-API).
    dankje voor je reactie
    ik snap de relatie tussen c# en c++ eigenlijk ook niet zo goed. C# is toch een opvolger van c++? MAar hij is wel simpeler en 'minder krachtig' gemaakt?
    Lijken de talen zoveel op elkaar dat je zonder problemen alletwee kan leren?
    Finally, someone let me out of my cage
    pi_81215675
    Nee, C# is geen directe opvolger van C++. C# is als het ware een kruising tussen C++ en Java. Je maakt doorgaans gebruik van het .net framework die al een hele hoop functionaliteit bevat die in je in C++ zelf zou hebben moeten programmeren, of die in ieder geval lastiger te gebruiken was. Dat betekent dat je minder tijd kwijt bent met het opnieuw uitvinden van het wiel, maar aan de andere kant beslist het framework hoe bepaalde dingen opgelost worden, terwijl je daar in C++ meer vrijheid in had.
    Het maken van Windows-applicaties in C++ heb ik een aantal jaar geleden gedaan met de Win32-API, en als je ziet hoe verrot lastig het daarin al is om een simpele treeview (ik noem maar iets) op je scherm te tekenen met handles en long pointers to c strings en weet ik veel wat voor rotte datatypen allemaal dan ben ik toch blij dat ik dat in Visual Studio en C# gewoon doe door een treeview-control naar mijn venster te slepen
    Dat betekent echter wel dat als ik de treeview iets wil laten doen wat niet standaard in het .net-framework zit (hoewel de kans daarop vrij klein is), dat het dan een stuk lastiger wordt.
    De syntax is tot op zekere hoogte vergelijkbaar (een for-loop is een for-loop), maar in C# los je een hele hoop op met het .net framework waar dat in C++ wat lastiger gaat.
    Ik moet wel toegeven dat ik geen ervaring heb met Visual C++ in combinatie met het .net framework, dus ik heb geen idee wat de verschillen zijn tussen C# .net en C++ .net
    Ik weet wel dat ik C++ zonder .net geen prettige bezigheid vond
    pi_81218529
    Windows applicaties maken in C++ is heel veel werk zodra je veel venstertjes etc. gaat maken, dan kan je beter C# oid gebruiken. Voor professionele games is C++ weer "beter" omdat het allemaal nog verder geoptimaliseerd kan worden.

    C++ is een goede taal om te leren omdat je high-level (OOP) semantiek en low-level semantiek in 1 taal hebt zitten, maar het nadeel is dat het daarom nogal overdonderend kan zijn. C# haalt veel kopzorgen voor je weg en geeft je hele mooie tools om venstertjes etc. te bouwen.
      zondag 9 mei 2010 @ 17:52:35 #72
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_81219621
    Windows API i.c.m. C++ is inderdaad niet de beste keuze. Heeft iemand hier ervaring met C++ en GTK voor de GUI?

    Ohja, en de WinAPI/.NET is niet cross-platform natuurlijk, dus OSX- en Linux-gebruikers kunnen er niets mee.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_81224200
    nouja, ik ben toch alleen met de absolute basis van c++ bezig, loopjes die me via pointers en references wat ouput geven (via cout, want ik snap niets van printf ), dus ik denk dat het geen kwaad kan eerst maar eens c++ te leren. Als ik dan daadwerkelijk windows applications wil maken, wat wss nog wel even duurt, ga ik wel weer over c# nadenken. Als de syntax op zich gewoon hetzelfde is lijkt me dat niet zo'n probleem
    Finally, someone let me out of my cage
      zondag 9 mei 2010 @ 20:07:48 #74
    118585 Crutch
    Filantroop || Taalzwengel
    pi_81224217
    Ik heb net een (misschien buggy) iTunes remote dingetje gemaakt in C# .Net


    M'n eerste werkende programmaatje.
    Je moeder is een hamster
      zondag 9 mei 2010 @ 21:37:46 #75
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_81228927
    Ik zou de sluitknop en het kader eromheen weghalen, je hebt toch al een sluitknop?

    Tevens is er een ander topic voor .NET eigenlijk, toch?
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
      zondag 9 mei 2010 @ 21:44:28 #76
    118585 Crutch
    Filantroop || Taalzwengel
    pi_81229324
    quote:
    Op zondag 9 mei 2010 21:37 schreef Trollface. het volgende:
    Ik zou de sluitknop en het kader eromheen weghalen, je hebt toch al een sluitknop?

    Tevens is er een ander topic voor .NET eigenlijk, toch?
    I know, maar hier kwam ineens actie.

    Als ik de borderstyle op 'none' zet, fuckt ie de hele layout op. Maar ik ga er wel even mee testen.
    Heeft waarschijnlijk te maken met de grootte van de tekst in de Font property.
    Je moeder is een hamster
    pi_81235067
    quote:
    Op zondag 9 mei 2010 20:07 schreef Crutch het volgende:
    Ik heb net een (misschien buggy) iTunes remote dingetje gemaakt in C# .Net


    M'n eerste werkende programmaatje.
    nice . Ik hoop dat ik over een tijd ook zover ben. Hoeveel werk zit er ongeveer in?
    Finally, someone let me out of my cage
      zondag 9 mei 2010 @ 23:41:20 #78
    118585 Crutch
    Filantroop || Taalzwengel
    pi_81235356
    4 uurtjes + 10 minuten Photoshop.
    Je moeder is een hamster
    pi_81235439
    Hij crashed wanneer je geen ITunes hebt. Ik zou even een Exception afvangen.
      zondag 9 mei 2010 @ 23:47:36 #80
    118585 Crutch
    Filantroop || Taalzwengel
    pi_81235672
    quote:
    Op zondag 9 mei 2010 23:43 schreef Fortitude het volgende:
    Hij crashed wanneer je geen ITunes hebt. Ik zou even een Exception afvangen.
    Oh, okay.
    Staat genoteerd.
    Je moeder is een hamster
    pi_81242204
    quote:
    Op zondag 9 mei 2010 23:41 schreef Crutch het volgende:
    4 uurtjes + 10 minuten Photoshop.
    Valt me mee, maar het dan ook niet zon groot dingetje . Doe je trouwens programmeren voor je opleiding of als hobby?
    Finally, someone let me out of my cage
      maandag 10 mei 2010 @ 09:13:56 #82
    118585 Crutch
    Filantroop || Taalzwengel
    pi_81242310
    quote:
    Op maandag 10 mei 2010 09:08 schreef minibeer het volgende:

    [..]

    Valt me mee, maar het dan ook niet zon groot dingetje . Doe je trouwens programmeren voor je opleiding of als hobby?
    Hobby.
    Je moeder is een hamster
    pi_81256760
    quote:
    Op maandag 10 mei 2010 09:13 schreef Crutch het volgende:

    [..]

    Hobby.
    ok .
    klein beginners vraagje. waarom:
    int main()
    {
    ...
    }

    ipv

    void main()
    {
    ...
    }

    Ik heb het tweede nog niet gezien bij voorbeeldcode, terwijl main toch echt nooit wordt gebruikt om een waarde door te geven...
    Finally, someone let me out of my cage
    pi_81256828
    quote:
    Op maandag 10 mei 2010 16:16 schreef minibeer het volgende:

    [..]

    ok .
    klein beginners vraagje. waarom:
    int main()
    {
    ...
    }

    ipv

    void main()
    {
    ...
    }

    Ik heb het tweede nog niet gezien bij voorbeeldcode, terwijl main toch echt nooit wordt gebruikt om een waarde door te geven...
    Conventie. die return-waarde wordt inderdaad bijna nooit gebruikt, maar volgensmij zijn er nog sommige antieke compilers of zelfs OS'en die moeilijk doen als er geen resultaat uit de main komt. Echter nog nooit tegengekomen.
      maandag 10 mei 2010 @ 16:44:59 #85
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_81257849
    Programma's horen een returncode terug te geven om aan te geven of de executie succesvol was. 0 = succesvol, bij elke andere waarde is er een fout opgetreden. Deze returncode wordt echter nog maar zelden gebruikt.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_81258315
    Die return-code kan je in batch files e.d. nog gebruiken om heel simpel wat feedback te krijgen van je apps. Kijk naar IF ERRORLEVEL voor DOS-batchfiles bijv.
    Ik gebruik void main() als het mogelijk is. Ik heb een hekel aan functies die een return-value hebben maar die by design nooit iets nuttigs returnen.
      maandag 10 mei 2010 @ 17:04:55 #87
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_81258625
    int main() hoort toch bij de C/C++-standaard?
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_81267087
    klinkt logisch. Bedankt
    Finally, someone let me out of my cage
      maandag 10 mei 2010 @ 22:04:27 #89
    189216 netolk
    maar dan andersom
    pi_81273219
    quote:
    Op maandag 10 mei 2010 17:04 schreef Trollface. het volgende:
    int main() hoort toch bij de C/C++-standaard?
    ja
    Beware of the Raping Zebra's
    pi_81273230
    quote:
    Op maandag 10 mei 2010 17:04 schreef Trollface. het volgende:
    int main() hoort toch bij de C/C++-standaard?
    Klopt. Ik houd er zo m'n eigen regels op na.
      maandag 10 mei 2010 @ 22:07:19 #91
    189216 netolk
    maar dan andersom
    pi_81273415
    quote:
    Op maandag 10 mei 2010 22:04 schreef Cruise.Elroy het volgende:

    [..]

    Klopt. Ik houd er zo m'n eigen regels op na.
    wat voor regels dan?

    EDIT:
    niet goed gelezen

    [ Bericht 8% gewijzigd door netolk op 10-05-2010 22:13:52 ]
    Beware of the Raping Zebra's
      maandag 10 mei 2010 @ 22:11:30 #92
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_81273692
    quote:
    Op maandag 10 mei 2010 22:04 schreef Cruise.Elroy het volgende:

    [..]

    Klopt. Ik houd er zo m'n eigen regels op na.
    Dat je programma's dan überhaupt compilen mijn compiler pakt void main() niet.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
      maandag 10 mei 2010 @ 22:13:10 #93
    189216 netolk
    maar dan andersom
    pi_81273810
    die van mij idd ook niet maar die compilers van/voor microsoft waarschijnlijk wel
    Beware of the Raping Zebra's
    pi_81273862
    quote:
    Op maandag 10 mei 2010 16:44 schreef Trollface. het volgende:
    Programma's horen een returncode terug te geven om aan te geven of de executie succesvol was. 0 = succesvol, bij elke andere waarde is er een fout opgetreden. Deze returncode wordt echter nog maar zelden gebruikt.
    Return values worden zeer veel gebruikt in linux systemen.
      maandag 10 mei 2010 @ 22:15:30 #95
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_81273956
    quote:
    Op maandag 10 mei 2010 22:13 schreef Thomass het volgende:

    [..]

    Return values worden zeer veel gebruikt in linux systemen.
    Valt ook wel mee hoor, in makefiles nog wel ja.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_81283933
    quote:
    Op maandag 10 mei 2010 22:11 schreef Trollface. het volgende:

    [..]

    Dat je programma's dan überhaupt compilen mijn compiler pakt void main() niet.
    Werkt alleen onder VC++ voor C++, en zou gewoon moeten compilen op elke C compiler afaik.
    pi_81305175
    quote:
    Op maandag 10 mei 2010 17:04 schreef Trollface. het volgende:
    int main() hoort toch bij de C/C++-standaard?
    Microsoft wijkt op een aantal punten van de standaard af.
    pi_81307571
    quote:
    Op dinsdag 11 mei 2010 17:40 schreef thabit het volgende:

    [..]

    Microsoft wijkt op een aantal punten van de standaard af.
    zou het (visual c++) dan eigenlijk een warning/error moeten geven?
    Finally, someone let me out of my cage
    pi_81308187
    quote:
    Op dinsdag 11 mei 2010 18:42 schreef minibeer het volgende:

    [..]

    zou het (visual c++) dan eigenlijk een warning/error moeten geven?
    Geen idee, ik werk niet meer met VC++, maar je kunt overal warnings en errors voor laten geven dus vast ook wel hiervoor. .
      dinsdag 11 mei 2010 @ 23:15:52 #100
    189216 netolk
    maar dan andersom
    pi_81321410
    quote:
    Op dinsdag 11 mei 2010 17:40 schreef thabit het volgende:

    [..]

    Microsoft wijkt op een aantal punten van de standaard af.
    tja dat zijn vaak ook de problemen met source code...
    Beware of the Raping Zebra's
      dinsdag 11 mei 2010 @ 23:23:45 #101
    111382 Ofyles2
    Bestemming: onbekend
    pi_81321832
    quote:
    Op zondag 7 maart 2010 11:56 schreef LucasHulshof het volgende:
    Een erg goede en gratis IDE, voor zowel windows/linux, gericht op het ontwikkelen van software met het QT framework (o.a. google earth maakt hier gebruik van)
    QTCreator

    Het QT Framework verlost je van het broddelwerk genaamd "windows api" en is compleet object georienteerd. Een aanrader voor iedereen die serieus portable software wil schrijven.
    Afgelopen november een editie van Linux Magazine gekocht, meteen verslaafd geraakt door de Qt Framework.
    pi_81332846
    Dit is trouwens ook wel een goed boek om de basisbeginselen van C++ te leren: http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
      woensdag 12 mei 2010 @ 12:57:03 #103
    189216 netolk
    maar dan andersom
    pi_81336532
    quote:
    Op woensdag 12 mei 2010 11:26 schreef thabit het volgende:
    Dit is trouwens ook wel een goed boek om de basisbeginselen van C++ te leren: http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
    en deze natuurlijk ook:
    cplusplus
    Beware of the Raping Zebra's
    pi_81864451
    van cplusplus.com heb ik de volgende code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // function template
    #include <iostream>
    using namespace std;

    template <class T>
    T GetMax (T a, T b) {
      T result;
      result = (a>b)? a : b;
      return (result);
    }

    int main () {
      int i=5, j=6, k;
      long l=10, m=5, n;
      k=GetMax<int>(i,j);
      n=GetMax<long>(l,m);
      cout << k << endl;
      cout << n << endl;
      return 0;
    }


    Maar is het niet zo dat de types int en long hetzelfde zijn en dit voorbeeld dus eigenlijk nutteloos is? Met het compilen heb ik in elk geval geen probleem als ik een int aan een long variabele probeer toe te wijzen en andersom (ook als argumenten bij functies niet).
    Finally, someone let me out of my cage
    pi_81865259
    een int een long zijn verschillende types.

    Een long is een "long-int"

    of er daadwerkelijk verschil in de lengte zit, is afhankelijk van je processor...

    Dus

    een short is 2 bytes
    een long is 4 bytes
    en een int is 2 of 4 bytes afhankelijk van je processor.
    "Wie niet gelooft in wonderen, is geen realist."
    pi_81865264
    Op 16-bitssystemen (mogelijk van voor jouw tijd ) was een int 16 bit en een long 32 bit.
    pi_81876850
    Het zijn verschillende types die op de huidige hardware "toevallig" dezelfde grootte hebben. Tenzij je de code gaat compileren op obscure platforms zou ik me er geen zorgen over maken.
    pi_81878408
    quote:
    Op dinsdag 25 mei 2010 12:21 schreef progje het volgende:
    een int een long zijn verschillende types.

    Een long is een "long-int"

    of er daadwerkelijk verschil in de lengte zit, is afhankelijk van je processor...

    Dus

    een short is 2 bytes
    een long is 4 bytes
    en een int is 2 of 4 bytes afhankelijk van je processor.
    ik snap het, hoewel het wat onlogisch overkomt om de grootte van een variabele af te laten hangen van de processor.
    Finally, someone let me out of my cage
    pi_81878464
    quote:
    Op dinsdag 25 mei 2010 12:21 schreef thabit het volgende:
    Op 16-bitssystemen (mogelijk van voor jouw tijd ) was een int 16 bit en een long 32 bit.
    ik heb het programmeren geleerd in qbasic
    Finally, someone let me out of my cage
    pi_81878670
    quote:
    Op dinsdag 25 mei 2010 17:38 schreef minibeer het volgende:

    [..]

    ik snap het, hoewel het wat onlogisch overkomt om de grootte van een variabele af te laten hangen van de processor.
    Is ook raar.
      dinsdag 25 mei 2010 @ 21:06:19 #111
    189216 netolk
    maar dan andersom
    pi_81889207
    quote:
    Op dinsdag 25 mei 2010 17:38 schreef minibeer het volgende:

    [..]

    ik snap het, hoewel het wat onlogisch overkomt om de grootte van een variabele af te laten hangen van de processor.
    raar maar waar...

    PS.
    Hier de groten van alle data typen

    Je kan natuurlijk ook de sizeof(agrument) gebruiken om te zien hoe groot iets is.. uitkomst is overigens wel in bytes
    Beware of the Raping Zebra's
    pi_82084432
    quote:
    Also, when using SDL, you must have your main() function declared like it is above. You can't use void main() or anything like that.
    Finally, someone let me out of my cage
    pi_82087740
    quote:
    Op zondag 30 mei 2010 00:03 schreef minibeer het volgende:

    [..]


      zondag 30 mei 2010 @ 03:27:46 #114
    111382 Ofyles2
    Bestemming: onbekend
    pi_82090058
    quote:
    Op dinsdag 25 mei 2010 21:06 schreef netolk het volgende:

    [..]

    raar maar waar...

    PS.
    Hier de groten van alle data typen

    Je kan natuurlijk ook de sizeof(agrument) gebruiken om te zien hoe groot iets is.. uitkomst is overigens wel in bytes
    Ik heb thuis een C++-programmeerboek liggen die datatypes van kleinere groottes heeft. Betreft int en long.
      zondag 30 mei 2010 @ 10:24:33 #115
    189216 netolk
    maar dan andersom
    pi_82091842
    quote:
    Op zondag 30 mei 2010 03:27 schreef Ofyles2 het volgende:

    [..]

    Ik heb thuis een C++-programmeerboek liggen die datatypes van kleinere groottes heeft. Betreft int en long.
    Dan is dat waarschijnlijk een oud boek...

    sizeof is de grootte die jouw computer er van maakt
    Beware of the Raping Zebra's
      zondag 30 mei 2010 @ 14:36:27 #116
    111382 Ofyles2
    Bestemming: onbekend
    pi_82099776
    quote:
    Op zondag 30 mei 2010 10:24 schreef netolk het volgende:

    [..]

    Dan is dat waarschijnlijk een oud boek...

    sizeof is de grootte die jouw computer er van maakt
    Het gaat om 'Sams Teach Yourself C++ in One Hour a Day'.

    Een pijnlijke fout is dat de auteurs van dat boek vermelden dat de long int en de int van dezelfde lengte zijn.
    pi_82100862
    quote:
    Op zondag 30 mei 2010 14:36 schreef Ofyles2 het volgende:

    [..]

    Het gaat om 'Sams Teach Yourself C++ in One Hour a Day'.

    Een pijnlijke fout is dat de auteurs van dat boek vermelden dat de long int en de int van dezelfde lengte zijn.
    dat is dus alleen bij nieuwe systemen zo,
    maar hier staat ook dat de int en de long int even groot zijn:
    http://www.cplusplus.com/doc/tutorial/variables/
    Finally, someone let me out of my cage
    pi_82101008
    quote:
    Op zondag 30 mei 2010 01:17 schreef Cruise.Elroy het volgende:

    [..]


    Van een SDL tutorial.
    Ik vroeg eerst waarom mensen eigenlijk men een main functie die een int was begonnen, maar dat is dus ook voor dit soort zaken
    Finally, someone let me out of my cage
      zondag 30 mei 2010 @ 15:08:01 #119
    189216 netolk
    maar dan andersom
    pi_82101076
    quote:
    Op zondag 30 mei 2010 15:03 schreef minibeer het volgende:

    [..]

    dat is dus alleen bij nieuwe systemen zo,
    maar hier staat ook dat de int en de long int even groot zijn:
    http://www.cplusplus.com/doc/tutorial/variables/
    ja nieuwe systemen hebben dat zo en daarom staat dat er waarschijnlijk aangezien (bijna) niemand die oude systemen nog gebruikt en er zeker geen programma's meer voor gemaakt worden
    Beware of the Raping Zebra's
      zondag 30 mei 2010 @ 15:09:08 #120
    189216 netolk
    maar dan andersom
    pi_82101124
    quote:
    Op zondag 30 mei 2010 15:06 schreef minibeer het volgende:

    [..]

    Van een SDL tutorial.
    Ik vroeg eerst waarom mensen eigenlijk men een main functie die een int was begonnen, maar dat is dus ook voor dit soort zaken
    gewoon int nemen dan zit je altijd goed
    Beware of the Raping Zebra's
      zondag 30 mei 2010 @ 15:10:27 #121
    111382 Ofyles2
    Bestemming: onbekend
    pi_82101186
    quote:
    Op zondag 30 mei 2010 15:03 schreef minibeer het volgende:

    [..]

    dat is dus alleen bij nieuwe systemen zo,
    maar hier staat ook dat de int en de long int even groot zijn:
    http://www.cplusplus.com/doc/tutorial/variables/
    Oh, oké.
    pi_82103691
    klopt het dat het niet mogelijk is om mode 13 graphics in visual c++ te doen? Dat zou niet werken omdat dat een 32-bits compiler is ofzo (verder snap ik hier de ballen van). Het zou wel kunnen in SDL, maar ik zou liever eerst om te oefenen mijn programmatjes uit qbasic naar c++ 'vertalen'. En dan kijken hoe snel ze zijn natuurlijk...
    Maar dit zit er dus niet in?
    Finally, someone let me out of my cage
    pi_82104011
    quote:
    Op zondag 30 mei 2010 16:02 schreef minibeer het volgende:
    klopt het dat het niet mogelijk is om mode 13 graphics in visual c++ te doen? Dat zou niet werken omdat dat een 32-bits compiler is ofzo (verder snap ik hier de ballen van). Het zou wel kunnen in SDL, maar ik zou liever eerst om te oefenen mijn programmatjes uit qbasic naar c++ 'vertalen'. En dan kijken hoe snel ze zijn natuurlijk...
    Maar dit zit er dus niet in?
    Mode 13 is iets van 20 jaar geleden. Tegenwoordig heb je geen palette meer van 256 kleuren Het heeft niets met de taal te maken, maar meer met het feit dat al die systemen uit het DOS-tijdperk stammen en niet meer 1-2-3 beschikbaar zijn.

    Ik kan je aanraden om toch SDL te gebruiken, maar misschien eerst C++ goed onder de knie krijgen.
    pi_82104492
    quote:
    Op zondag 30 mei 2010 16:10 schreef Cruise.Elroy het volgende:

    [..]

    Mode 13 is iets van 20 jaar geleden. Tegenwoordig heb je geen palette meer van 256 kleuren Het heeft niets met de taal te maken, maar meer met het feit dat al die systemen uit het DOS-tijdperk stammen en niet meer 1-2-3 beschikbaar zijn.

    Ik kan je aanraden om toch SDL te gebruiken, maar misschien eerst C++ goed onder de knie krijgen.
    Met qbasic kan je wel gewoon screen 13 graphics en alles doen (tot en met XP werkt dat prima). Beetje jammer, want ik vind graphics wel een van de leukere dingen om te doen, en om nou met SDL te beginnen terwijl ik c++ nog niet echt goed ken... maarja.
    Finally, someone let me out of my cage
    pi_82105350
    quote:
    Op zondag 30 mei 2010 16:21 schreef minibeer het volgende:

    [..]

    Met qbasic kan je wel gewoon screen 13 graphics en alles doen (tot en met XP werkt dat prima). Beetje jammer, want ik vind graphics wel een van de leukere dingen om te doen, en om nou met SDL te beginnen terwijl ik c++ nog niet echt goed ken... maarja.
    Ik kom ook uit een QBasic achtergrond, en het is wel even wennen.
    Als je echt wilt, kan je heel snel een applicatie uit de grond stampen in win32 met een scherm en een tekencanvas (zonder extra libs te hoeven downloaden)

    // maken en registeren van een window:
    RegisterWindowEx()
    CreateWindowEx ()
    ShowWindow()
    // functie die je moet maken waarin je events afhandeld
    WindowProc()

    // maken van een tekencanvas
    CreateDIBSection()
    GetDC()
    SelectObject()

    // kopieren van het tekencanvas naar de oppervlakte van je windowBitBlt()
    BitBlt()

    // Afhandelen van window-events:
    GetMessage()
    en dan de events:

    WM_PAINT (herschrijven van je window)
    beetje muis-events afvangen:
    WM_MOUSEMOVE
    WM_LBUTTONDOWN

    Het is even googlen maar dan heb je in een dag wel een werkend framework waar je redelijk snel op kan tekenen. Het is alleen allemaal event driven, dus als je wilt animeren zul je iets met CreateTimer() moeten doen of met GetTickCount() de tijd in ms opvragen en dat in het GetMessage() loopje zelf doen.
    pi_82106196
    quote:
    Op zondag 30 mei 2010 16:42 schreef Cruise.Elroy het volgende:

    [..]

    Ik kom ook uit een QBasic achtergrond, en het is wel even wennen.
    Als je echt wilt, kan je heel snel een applicatie uit de grond stampen in win32 met een scherm en een tekencanvas (zonder extra libs te hoeven downloaden)

    // maken en registeren van een window:
    RegisterWindowEx()
    CreateWindowEx ()
    ShowWindow()
    // functie die je moet maken waarin je events afhandeld
    WindowProc()

    // maken van een tekencanvas
    CreateDIBSection()
    GetDC()
    SelectObject()

    // kopieren van het tekencanvas naar de oppervlakte van je windowBitBlt()
    BitBlt()

    // Afhandelen van window-events:
    GetMessage()
    en dan de events:

    WM_PAINT (herschrijven van je window)
    beetje muis-events afvangen:
    WM_MOUSEMOVE
    WM_LBUTTONDOWN

    Het is even googlen maar dan heb je in een dag wel een werkend framework waar je redelijk snel op kan tekenen. Het is alleen allemaal event driven, dus als je wilt animeren zul je iets met CreateTimer() moeten doen of met GetTickCount() de tijd in ms opvragen en dat in het GetMessage() loopje zelf doen.
    dankje!
    ok, ziet er wel ok uit, wordt dit gebruikt voor simpele grafieken binnen windows programma's enzo (zeg maar met de windows.h lib)?
    Ik zal er eens naar kijke
    maar het lijkt me niet zo makkelijk als screen 13 in qbasic
    echt jammer dat er geen optie is voor 16-bit compilen...

    [ Bericht 1% gewijzigd door minibeer op 30-05-2010 17:19:00 ]
    Finally, someone let me out of my cage
    pi_82106749
    quote:
    Op zondag 30 mei 2010 17:03 schreef minibeer het volgende:

    [..]

    ok, ziet er wel ok uit, wordt dit gebruikt voor simpele grafieken binnen windows programma's enzo (zeg maar met de windows.h lib)?
    Ik zal er eens naar kijke
    maar het lijkt me niet zo makkelijk als screen 13 in qbasic
    echt jammer dat er geen optie is voor 16-bit compilen (of is dit onzin wat ik nu zeg :P)
    Als je een oude C++ compiler pakt kan je wss wel oude DOS-executables maken. Geen idee hoe je dat precies kan regelen maar er zijn compilers voor. Dan blijf je helaas wel hangen in een verouderd systeem en dat is wss gewoon zonde van je tijd.
    pi_82107552
    quote:
    Op zondag 30 mei 2010 17:17 schreef Cruise.Elroy het volgende:

    [..]

    Als je een oude C++ compiler pakt kan je wss wel oude DOS-executables maken. Geen idee hoe je dat precies kan regelen maar er zijn compilers voor. Dan blijf je helaas wel hangen in een verouderd systeem en dat is wss gewoon zonde van je tijd.
    Ja ik wil het sowieso wel bij 1 compiler (per taal) houden, anders vind ik het zo'n gedoe. (Om dan bijvoorbeeld sdl bij beide aan de praat te krijgen)
    Finally, someone let me out of my cage
    pi_82396342
    nog een n00bvraag...
    Het lukt me niet om in visual c++ andere source files te compileren
    bijvoorbeeld dit bestand:
    Codermind Raytracer source



    Het zal vast niet zo moeilijk zijn maar ik zou niet weten wat ik verkeerd doe
    Finally, someone let me out of my cage
    pi_82396439
    je hebt nu een losse CPP file. Je moet er even een project (solution) omheen draaien.

    New project maken met de wizard, doe je gewoon C++ appliclication (met console evt) en dan "empty solution". Dan de inhoud van dat bestand in je main.cpp zetten, of dat bestand importeren in je project.
    pi_82401066
    quote:
    Op zondag 6 juni 2010 15:11 schreef Cruise.Elroy het volgende:
    je hebt nu een losse CPP file. Je moet er even een project (solution) omheen draaien.

    New project maken met de wizard, doe je gewoon C++ appliclication (met console evt) en dan "empty solution". Dan de inhoud van dat bestand in je main.cpp zetten, of dat bestand importeren in je project.
    ok thanks man ik wist dat het zoiets moest zijn
    (ik krijg hem nu alleen nog niet aan de praat:
    1
    2
    3
    4
    5
    6
    'raytrace.exe': Loaded 'C:\Users\thuispc\Documents\Visual Studio 2008\Projects\Project1\raytrace\Debug\raytrace.exe', Symbols loaded.
    'raytrace.exe': Loaded 'C:\Windows\System32\ntdll.dll'
    'raytrace.exe': Loaded 'C:\Windows\System32\kernel32.dll'
    'raytrace.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcp90d.dll'
    'raytrace.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcr90d.dll'
    The program '[8152] raytrace.exe: Native' has exited with code -1 (0xffffffff).
    )
    Finally, someone let me out of my cage
      zondag 6 juni 2010 @ 16:41:00 #132
    189216 netolk
    maar dan andersom
    pi_82401127
    Wat ben je aan het maken minibeer?

    die code ziet er interessant uit
    Beware of the Raping Zebra's
      zondag 6 juni 2010 @ 16:41:29 #133
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_82401150
    quote:
    Op zondag 6 juni 2010 16:41 schreef netolk het volgende:
    Wat ben je aan het maken minibeer?

    die code ziet er interessant uit
    Dit, lijkt me.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
      zondag 6 juni 2010 @ 16:44:30 #134
    189216 netolk
    maar dan andersom
    pi_82401301
    quote:
    Op zondag 6 juni 2010 16:41 schreef Trollface. het volgende:

    [..]

    Dit, lijkt me.
    joh...

    ik vraag me ook af waarvoor de code dient en ben lui
    Beware of the Raping Zebra's
    pi_82401365
    niet van mij hoor zo ver ben ik nog niet
    gewoon een voorbeeld van raytracen, van het internet geplukt
    in qbasic heb ik nog wel eens een raytracer ding gemaakt
    Finally, someone let me out of my cage
      zondag 6 juni 2010 @ 16:51:41 #136
    189216 netolk
    maar dan andersom
    pi_82401704
    quote:
    Op zondag 6 juni 2010 16:45 schreef minibeer het volgende:
    niet van mij hoor zo ver ben ik nog niet
    gewoon een voorbeeld van raytracen, van het internet geplukt
    in qbasic heb ik nog wel eens een raytracer ding gemaakt
    dankje nu hoef ik zelf niet te kijken
    Beware of the Raping Zebra's
    pi_82404972
    quote:
    Op zondag 6 juni 2010 16:39 schreef minibeer het volgende:

    [..]

    ok thanks man ik wist dat het zoiets moest zijn
    (ik krijg hem nu alleen nog niet aan de praat:
    [ code verwijderd ]

    )
    Je zal toch meer moeten posten dan een lege log als je verwacht dat we je kunnen helpen.
    pi_82405367
    Hoe ziet je main() eruit? int main() {return -1;} ?
    pi_82407070
    quote:
    Op zondag 6 juni 2010 18:00 schreef Cruise.Elroy het volgende:

    [..]

    Je zal toch meer moeten posten dan een lege log als je verwacht dat we je kunnen helpen.
    ja sorry ik heb nog niet echt de betekenis van die log door
    maar het is iig het bestand dat ik eerder al gepost had
    Finally, someone let me out of my cage
    pi_82548104
    is het al gelukt?
      donderdag 17 juni 2010 @ 15:48:56 #141
    189216 netolk
    maar dan andersom
    pi_82935408
    quote:
    Op woensdag 9 juni 2010 13:55 schreef Cruise.Elroy het volgende:
    is het al gelukt?
    Beware of the Raping Zebra's
    pi_82999131
    oweeeeuh nee, ik heb het maar opgegeven
    (en ik ben ondertussen een week op vakantie geweest enzo )
    Finally, someone let me out of my cage
      zaterdag 26 juni 2010 @ 17:35:23 #143
    189216 netolk
    maar dan andersom
    pi_83330203
    Hey ik heb een probleem met de ifstream eof() gebeuren...


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <fstream>
    #include <iostream>
    int main(){
       std::ifstream Read("lol.jpg");
       if(Read.is_open()){
          int i = 0;
          while(!Read.eof()){
             char temp = Read.get();
             i++;
          }
          Read.close();
          std::cout << "i = " << i <<'\n';
       }
       return 0;
    }

    lol.jpg is (volgens windows) 353.821 bytes en 356.352 bytes grootte op schijf
    dus ik zou zeggen dat het progje ook die waarde zou moeten weergeven alleen nu geeft het programma 275 aan daarna nokt het progje er dus mee

    zou iemand me kunnen vertellen waarom dit gebeurt en hoe ik dit kan oplossen?

    mvg. netolk
    Beware of the Raping Zebra's
      zaterdag 26 juni 2010 @ 19:18:06 #144
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_83333330
    Binaire data lees je toch niet met chars.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_83334300
    Zou het kunnen zijn dat op byte positie 275 het EOF teken staat? Waardoor de boel stopt.

    @Trollface: Binaire data kun je in een char lezen, als je er verder toch niks mee doet.
      zaterdag 26 juni 2010 @ 20:00:38 #146
    189216 netolk
    maar dan andersom
    pi_83334601
    quote:
    Op zaterdag 26 juni 2010 19:18 schreef Trollface. het volgende:
    Binaire data lees je toch niet met chars.
    get() leest 1 byte en char is 1 byte.
    quote:
    Op zaterdag 26 juni 2010 19:51 schreef moeftie het volgende:
    Zou het kunnen zijn dat op byte positie 275 het EOF teken staat? Waardoor de boel stopt.

    @Trollface: Binaire data kun je in een char lezen, als je er verder toch niks mee doet.
    Ik had daar ook naar gekeken er staat een EM (end of medium) maar ik had dus een test bestandje gemaakt met halverwege zo'n EM maar daar las hij wel gewoon netjes tot het einde van het bestand..
    Beware of the Raping Zebra's
    pi_83335796
    Het probleem is denk ik dat de constructor van ifstream het bestand standaard als tekstbestand opent. Probeer dus
    std::ifstream Read("lol.jpg", std::ios_base::binary);
      zaterdag 26 juni 2010 @ 20:43:42 #148
    189216 netolk
    maar dan andersom
    pi_83336195
    quote:
    Op zaterdag 26 juni 2010 20:33 schreef thabit het volgende:
    Het probleem is denk ik dat de constructor van ifstream het bestand standaard als tekstbestand opent. Probeer dus
    std::ifstream Read("lol.jpg", std::ios_base::binary);
    Hehe, best wel stom had ik moeten weten XD maar het werkt dus bedankt thabit
    Beware of the Raping Zebra's
    pi_83476106
    Na een tijdje in Python en Perl gespeeld te hebben is mij geadviseerd om verder te gaan in C++. Dit vooral omdat ik bezig ben in de bioinformatica.

    Ben ondertussen de cplusplus tutorial aan het doornemen maar vroeg me af of er online boeken/documentatie beschikbaar is met opdrachten.

    En of jullie misschien tutorials weten in de richting van bioinformatica?

    Dit alles doe ik in Xcode en moet zeggen dat tot nu toe alles nog vlekkeloos werkt
    pi_83477241
    Ik geloof dat ze op CPP-home(.com) wel tutorials e.d. hebben; sowieso een goede community die je kunnen helpen.
    En dingen "in de richting van" bioinformatica lijkt me heel lastig, ik zou niets kunnen noemen wat nou typisch bioinformatica is. Voor wetenschappelijke simulaties hebje vaak goede data-architectuur kennis nodig in combinatie met geoptimaliseerde algo's (die je meestal uit papers haalt) en high-level logica.
      woensdag 30 juni 2010 @ 20:01:39 #151
    164101 Thormodo
    Nu inclusief tweede aap!
    pi_83504311
    quote:
    Op woensdag 30 juni 2010 05:20 schreef xienixs het volgende:
    Ben ondertussen de cplusplus tutorial aan het doornemen maar vroeg me af of er online boeken/documentatie beschikbaar is met opdrachten.

    En of jullie misschien tutorials weten in de richting van bioinformatica?

    Dit alles doe ik in Xcode en moet zeggen dat tot nu toe alles nog vlekkeloos werkt
    Op http://lesmateriaal.saxion.nl/gej/oopr/index.html , http://lesmateriaal.saxion.nl/gej/cpba1/index.html & http://lesmateriaal.saxion.nl/gej/cpro2/index.html staat ook wel wat. Ligt er maar net aan wat je nodig hebt.

    En nog wat zooi die ik in mijn bookmarks had staan:
    http://msdn.microsoft.com(...)k5%28v=VS.71%29.aspx
    http://www.ronkes.nl/oldprogrammeren/

    Maar goed je kan beter gericht zoeken naar wat je nodig bent, want over alles staat wel wat op internet.

    En dit boek (maar dan de Visual C# versie) vond ik wel fijn: http://www.bol.com/nl/p/e(...)002115621/index.html .

    [ Bericht 4% gewijzigd door Thormodo op 30-06-2010 20:11:58 ]
      zondag 4 juli 2010 @ 15:17:46 #152
    189216 netolk
    maar dan andersom
    pi_83644739
    Hey, ik heb iets nodig zoals ::SetConsoleCursorPosition(myHandle, myCoord); alleen moet hij dat de cursorpositie geven... Weet iemand of zo'n functie bestaat of hoe die te maken is?

    avb
    Beware of the Raping Zebra's
    pi_83647560
    Beetje googlen en je hebt het zo gevonden:

    Op MSDN, zoeken naar SetConsoleCursorPosition:
    http://msdn.microsoft.com/en-us/library/ms686025(VS.85).aspx

    En dan halverwege de tekst:
    quote:
    The cursor position determines where characters written by the WriteFile or WriteConsole function, or echoed by the ReadFile or ReadConsole function, are displayed. To determine the current position of the cursor, use the GetConsoleScreenBufferInfo function.
    Eh die staat hier: http://msdn.microsoft.com/en-us/library/ms683171(v=VS.85).aspx
      zondag 4 juli 2010 @ 17:43:52 #154
    189216 netolk
    maar dan andersom
    pi_83648893
    quote:
    Op zondag 4 juli 2010 16:56 schreef Cruise.Elroy het volgende:
    Beetje googlen en je hebt het zo gevonden:

    Op MSDN, zoeken naar SetConsoleCursorPosition:
    http://msdn.microsoft.com/en-us/library/ms686025(VS.85).aspx

    En dan halverwege de tekst:
    [..]

    Eh die staat hier: http://msdn.microsoft.com/en-us/library/ms683171(v=VS.85).aspx
    ik krijg bij het compileren een fout melding:
    1request for member `dwCursorPosition' in `myInfo', which is of non-class type 'CONSOLE_SCREEN_BUFFER_INFO*'


    dit is stukje van de code
    1
    2
    3
    4
    5
    CONSOLE_SCREEN_BUFFER_INFO* myInfo;
       GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),myInfo);
       COORD myCoord = myInfo.dwCursorPosition;
       myCoord.X -=3;
       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),myCoord);
    Beware of the Raping Zebra's
    pi_83652125
    quote:
    BOOL WINAPI GetConsoleScreenBufferInfo(
    __in HANDLE hConsoleOutput,
    __out PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
    );
    Het is niet zo duidelijk, maar kijk goed naar het type en de naam van de tweede parameter:
    De P bij het type en de lp in de naam geeft aan dat het een pointer is.

    PCONSOLE_SCREEN_BUFFER_INFO is een pointer naar CONSOLE_SCREEN_BUFFER_INFO (ms typedeft of defined vaak zijn pointers, geen idee waarom)

    ipv myCoord moet je dus &myCoord meegeven.
    pi_83656417
    @netolk
    Ik gok ook op iets met pointers, en niet gevulde variabelen.
      maandag 5 juli 2010 @ 08:14:26 #157
    189216 netolk
    maar dan andersom
    pi_83669917
    Dat is het dus niet...
    Ik heb van alles geprobeerd met die pointers, maar niks helpt Ik heb eerder het idee dat dwCursorPosition niet in de struct staat... maar de error is in line3 van het stukje code in mijn vorige post...
    Beware of the Raping Zebra's
    pi_83669992
    Ik zie het al, jij maakt een pointer aan die je niet initialiseert en die geef je mee aan de functie. Die pointer moet wijzen naar een struct waar Get....() zijn info in kan zetten. De "juiste" code is dus:

    1
    2
    3
    4
    5
       CONSOLE_SCREEN_BUFFER_INFO myInfo;
       GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&myInfo);
       COORD myCoord = myInfo.dwCursorPosition;
       myCoord.X -=3;
       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),myCoord);

    Ik heb van myInfo een struct gemaakt ipv een pointer en deze reference ik naar een pointer met de -& opearator in de functieaanroep. (in mijn vorige post schreef ik myCoord, maar ik bedoelde natuurlijk myInfo)
    De error die je kreeg sloeg op de regel waar je dus met een . operator pointer probeerde te benaderen in regel 3.

    Dit is best wel basic stuff, misschien moet je je even inlezen in pointers, stack variabelen etc.
      maandag 5 juli 2010 @ 08:30:33 #159
    189216 netolk
    maar dan andersom
    pi_83670056
    quote:
    Op maandag 5 juli 2010 08:22 schreef Cruise.Elroy het volgende:
    Ik zie het al, jij maakt een pointer aan die je niet initialiseert en die geef je mee aan de functie. Die pointer moet wijzen naar een struct waar Get....() zijn info in kan zetten. De "juiste" code is dus:
    [ code verwijderd ]

    Ik heb van myInfo een struct gemaakt ipv een pointer en deze reference ik naar een pointer met de -& opearator in de functieaanroep. (in mijn vorige post schreef ik myCoord, maar ik bedoelde natuurlijk myInfo)
    De error die je kreeg sloeg op de regel waar je dus met een . operator pointer probeerde te benaderen in regel 3.

    Dit is best wel basic stuff, misschien moet je je even inlezen in pointers, stack variabelen etc.
    Hèhè,

    Toch bedankt ik zal idd die pointer gebeuren weer ff doornemen
    Beware of the Raping Zebra's
    pi_83828775
    Kunt beter bij tweakers zijn voor dit.
    pi_83830420
    quote:
    Op donderdag 8 juli 2010 23:28 schreef ReWout het volgende:
    Kunt beter bij tweakers zijn voor dit.
    Nee hoor, dit lukt hier prima.
      vrijdag 9 juli 2010 @ 10:44:07 #162
    189216 netolk
    maar dan andersom
    pi_83840380
    quote:
    Op donderdag 8 juli 2010 23:28 schreef ReWout het volgende:
    Kunt beter bij tweakers zijn voor dit.
    Omdat??

    Gaat prima hoor, ik zag in dit geval gewoon even wat over het hoofd maar andere zien dat dan weer wel
    Beware of the Raping Zebra's
    pi_84753208
    Wat ik me altijd heb afgevraagd: als je een Win32 programma compileert, vertel je tegen de linker/compiler/whatever dat het een .exe in PE formaat is. Je bent in het feite code aan het produceren die tegen de HAL praat. Maar als je een Linux kernel compileert, wat voor een code komt er dan uit? Wat is je target platform?
    pi_84753435
    quote:
    Op zondag 1 augustus 2010 22:30 schreef TeringHenkie het volgende:
    Wat ik me altijd heb afgevraagd: als je een Win32 programma compileert, vertel je tegen de linker/compiler/whatever dat het een .exe in PE formaat is. Je bent in het feite code aan het produceren die tegen de HAL praat. Maar als je een Linux kernel compileert, wat voor een code komt er dan uit? Wat is je target platform?
    Je compiler is gewoon hard-coded om PE-headers te compileren, inclusief ondersteuning voor platform-specifieke communicatie met de HAL. Volgens mij declareer je in de PE-header ook de communicatiekanalen naar je OS mbh functie-tabellen enzo, die via de exe-loader worden ingevuld.
    pi_84754533
    quote:
    Op zondag 1 augustus 2010 22:35 schreef Cruise.Elroy het volgende:

    [..]

    Je compiler is gewoon hard-coded om PE-headers te compileren, inclusief ondersteuning voor platform-specifieke communicatie met de HAL. Volgens mij declareer je in de PE-header ook de communicatiekanalen naar je OS mbh functie-tabellen enzo, die via de exe-loader worden ingevuld.
    Dus als je een kernel bakt, compileer je puur tegen de CPU aan (met een of andere compilerflagje). Je bent dan alleen maar registertjes aan het vullen en interrupts aan het callen? (mooi gewrapt in C-code :P)
      zondag 1 augustus 2010 @ 23:09:13 #166
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_84754806
    quote:
    Op zondag 1 augustus 2010 22:30 schreef TeringHenkie het volgende:
    Wat ik me altijd heb afgevraagd: als je een Win32 programma compileert, vertel je tegen de linker/compiler/whatever dat het een .exe in PE formaat is. Je bent in het feite code aan het produceren die tegen de HAL praat. Maar als je een Linux kernel compileert, wat voor een code komt er dan uit? Wat is je target platform?
    Linux heeft geen PE-type executables, maar ELF's. :)
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_84754870
    quote:
    Op zondag 1 augustus 2010 23:09 schreef Trollface. het volgende:

    [..]

    Linux heeft geen PE-type executables, maar ELF's. :)
    I know, maar het ging me meer om de compiler vs. kernel dan om het OS zelf. Welke optie geef je mee aan gcc om een kernel te bakken ipv. een (ELF-)binary?
      zondag 1 augustus 2010 @ 23:25:43 #168
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_84755456
    quote:
    Op zondag 1 augustus 2010 23:10 schreef TeringHenkie het volgende:

    [..]

    I know, maar het ging me meer om de compiler vs. kernel dan om het OS zelf. Welke optie geef je mee aan gcc om een kernel te bakken ipv. een (ELF-)binary?
    Pak de makefile erbij, zou ik zeggen :P de Linux-kernel is in ieder geval niet helemaal standaard C.
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_84755766
    Nou ik ken het niet vinden :P

    SPOILER
    Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
    pi_84756067
    gast :')
      maandag 2 augustus 2010 @ 00:10:56 #171
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_84757421
    Mobiel kan spoilers niet inklappen :')

    Ook,
    # Make variables (CC, etc...)

    AS = $(CROSS_COMPILE)as
    LD = $(CROSS_COMPILE)ld
    CC = $(CROSS_COMPILE)gcc
    CPP = $(CC) -E
    AR = $(CROSS_COMPILE)ar
    NM = $(CROSS_COMPILE)nm
    STRIP = $(CROSS_COMPILE)strip
    OBJCOPY = $(CROSS_COMPILE)objcopy
    OBJDUMP = $(CROSS_COMPILE)objdump
    AWK = awk
    GENKSYMS = scripts/genksyms/genksyms
    INSTALLKERNEL := installkernel
    DEPMOD = /sbin/depmod
    KALLSYMS = scripts/kallsyms
    PERL = perl
    CHECK = sparse

    CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
    -Wbitwise -Wno-return-void $(CF)
    MODFLAGS = -DMODULE
    CFLAGS_MODULE = $(MODFLAGS)
    AFLAGS_MODULE = $(MODFLAGS)
    LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds
    CFLAGS_KERNEL =
    AFLAGS_KERNEL =
    CFLAGS_GCOV = -fprofile-arcs -ftest-coverage

    i.c.m. het vmlinux-gedeelte. :)
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_84758005
    quote:
    Op maandag 2 augustus 2010 00:10 schreef Trollface. het volgende:
    Mobiel kan spoilers niet inklappen :')


    Maar goed, ik snap het wel. Thx ^O^
    pi_84898443
    C++ lijkt een beetje op CSS als je totaal niet oplet :{

    [ Bericht 93% gewijzigd door Pakspul op 05-08-2010 16:37:15 ]
      donderdag 5 augustus 2010 @ 16:36:39 #174
    118585 Crutch
    Filantroop || Taalzwengel
    pi_84898864
    quote:
    Op donderdag 5 augustus 2010 16:23 schreef Pakspul het volgende:
    Waarom werkt tekst transparantie in de volgende situatie niet?
    [ code verwijderd ]

    Zoals te zien is dat bij de eerste div situatie de tekst gewoon mooi wit is, maar bij de twee is de tekst ineens roodachtig ook al zou je anders verwachten :?
    [CSS] voor dummies #15
    Je moeder is een hamster
      donderdag 5 augustus 2010 @ 16:46:54 #175
    118585 Crutch
    Filantroop || Taalzwengel
    pi_84899197
    quote:
    Op donderdag 5 augustus 2010 16:23 schreef Pakspul het volgende:
    C++ lijkt een beetje op CSS als je totaal niet oplet :{
    Als je totaal niet oplet dan lijkt Annemarie Jorritsma ook op Chantal Janzen :P
    Je moeder is een hamster
    pi_84901865
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    int doeietsmetgetal(int);

    int _tmain(int argc, _TCHAR* argv[])
    {
        int (*fpoint)(int) = doeietsmetgetal;
        cout << fpoint(5);
        return 0;

    }

    int doeietsmetgetal(int x){

        int * y = new int(x*5);
        return *y;

    }
    Hoe zit het hier met *y? Blijft deze geheugen innemen totdat mijn programma afsluit? Ik kan namelijk *fpoint niet verwijderen, aangezien ik 'm niet met new gecreëerd heb.
    pi_84901945
    *y blijft inderdaad geheugen innemen omdat je new aanroept. Ook als je *fpoint wel zou kunnen verwijderen, dan blijven alle *y instanties gewoon geheugen innemen.
    pi_84902011
    quote:
    Op donderdag 5 augustus 2010 18:10 schreef thabit het volgende:
    *y blijft inderdaad geheugen innemen omdat je new aanroept. Ook als je *fpoint wel zou kunnen verwijderen, dan blijven alle *y instanties gewoon geheugen innemen.
    En hoe zorg ik ervoor dat y geen geheugen meer inneemt? Niet aanroepen met new? En hoe delete ik m'n fpoint? Of moet ik dan van die doeietsmetgetal functie gewoon een class maken? En mag ik aannemen dat zodra een variabele die zonder new is gedeclareerd verwijderd wordt zodra de functie exit?
    pi_84902611
    Locale (niet-static) variabelen van functies worden op de stack aangemaakt, en die stackruimte wordt vrijgegeven als je de functie verlaat. De pointer y wordt dus ook vrijgegeven, maar niet de int *y waar hij naar verwijst. Ook is fpoint een functiepointer, dus gewoon een locale variabele die wordt verwijderd zodra je de functie verlaat. In het bovenstaande voorbeeld kun je beter
    int y = x*5; return y;
    doen, of zelfs direct return x*5;
    pi_84902855
    quote:
    Op donderdag 5 augustus 2010 18:35 schreef thabit het volgende:
    Locale (niet-static) variabelen van functies worden op de stack aangemaakt, en die stackruimte wordt vrijgegeven als je de functie verlaat. De pointer y wordt dus ook vrijgegeven, maar niet de int *y waar hij naar verwijst. Ook is fpoint een functiepointer, dus gewoon een locale variabele die wordt verwijderd zodra je de functie verlaat. In het bovenstaande voorbeeld kun je beter
    int y = x*5; return y;
    doen, of zelfs direct return x*5;
    Ok en m'n functiepointer? Valt die gewoon te verwijderen? Of moet ik 'm dan in de scope van een functie zien te proppen?
    pi_84903151
    Je functiepointer is gewoon een lokale variabele en zit in de scope van _tmain. In dit voorbeeld heb je verder geen functiepointers nodig en kun je gewoon
    cout << doeietsmetgetal(5);
    doen.
    pi_84907795
    Thanks! ^O^
      vrijdag 6 augustus 2010 @ 13:51:23 #183
    189216 netolk
    maar dan andersom
    pi_84936110
    Hey,

    Ik heb een probleem met virtual functies...

    ik heb een namespace gemaakt in een header genaamd Shape.h
    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
    namespace shp{
        class Point{
            unsigned short X,Y;
            public:
                Point(unsigned short x,unsigned short y):X(x),Y(y) {}
                unsigned short get_X(){return X;}
                unsigned short get_Y(){return Y;}
        };
        class Shape{
            public:
                virtual void Rotate(int)=0;
                virtual void Draw()=0;
                virtual bool is_Closed()=0;
        };
        
        class Circle:public Shape{
            Point _CENTER;
            unsigned _RADIUS;
            
            void Rotate(int);
            public:
                Circle(Point p,unsigned r):_CENTER(p),_RADIUS(r){}
                
                void Draw();
                bool is_Closed(){return true;}
        };
    }
    en ik heb dan in mn main het volgende staan:
    1
    2
    3
    4
    5
    6
    7
    #include "Shape.h"
    int main(){
        shp::Circle myCircle(shp::Point(40,20),5);
        
        //myCircle.Draw();
        return 0;
    }
    Als ik dit probeer te compileren krijg ik de volgende foutmelding:
    1
    2
    ...l\Temp/ccoiasqN.o:main.cpp:(.text$_ZN3shp6CircleC1ENS_5PointEj[shp::Circle::Circle(shp::Point, unsigned int)]+0x16): undefined reference to `vtable for shp::Circle'
    collect2: ld returned 1 exit status
    ik gebruik G++ als compiler, zou iemand me kunnen vertellen wat ik dan niet goed doe?
    Beware of the Raping Zebra's
    pi_84936360
    even een recompile ofzo? hij zegt dat Circle geen virtual table heeft, en blijkbaar ergens niet als derived class is gedefinieerd?

    Geen idee verder.
      vrijdag 6 augustus 2010 @ 14:01:44 #185
    189216 netolk
    maar dan andersom
    pi_84936577
    quote:
    Op vrijdag 6 augustus 2010 13:56 schreef Cruise.Elroy het volgende:
    even een recompile ofzo? hij zegt dat Circle geen virtual table heeft, en blijkbaar ergens niet als derived class is gedefinieerd?

    Geen idee verder.
    Dat is toch raar want Circle zou toch gewoon een virtual table moeten hebben aangezien zijn base class puur virtueel is?
    Beware of the Raping Zebra's
    pi_84938228
    Waarom heb je Circle::Rotate private gemaakt?
      vrijdag 6 augustus 2010 @ 14:41:10 #187
    189216 netolk
    maar dan andersom
    pi_84938305
    nou omdat een cirkel roteren niet echt nuttig is...
    maar ik dacht miss is dat het probleem maar toen ik hem public had kreeg ik nog steeds de zelfde melding...
    Beware of the Raping Zebra's
    pi_84938455
    Hij is public in Shape. Dus als je een object van type Shape hebt, en weet niet wat voor Shape het is, moet je wel Rotate erop kunnen aanroepen. Maar goed, dat terzijde.
      vrijdag 6 augustus 2010 @ 14:47:01 #189
    189216 netolk
    maar dan andersom
    pi_84938565
    quote:
    Op vrijdag 6 augustus 2010 14:44 schreef thabit het volgende:
    Hij is public in Shape. Dus als je een object van type Shape hebt, en weet niet wat voor Shape het is, moet je wel Rotate erop kunnen aanroepen. Maar goed, dat terzijde.
    Hmm... daar heb je idd een punt
    Beware of the Raping Zebra's
    pi_84938850
    Misschien zit de fout in Shape.cpp, kun je die tonen?
      vrijdag 6 augustus 2010 @ 15:03:55 #191
    189216 netolk
    maar dan andersom
    pi_84939258
    Staat ook in mn 1e post maar ik zal hem nog een keertje neerzetten
    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
    #ifndef SHAPE_H
    #define SHAPE_H
    namespace shp{
        class Point{
            unsigned short X,Y;
            public:
                Point(unsigned short x,unsigned short y):X(x),Y(y) {}
                unsigned short get_X(){return X;}
                unsigned short get_Y(){return Y;}
        };
        class Shape{
            public:
                virtual void Rotate(int)=0;
                virtual void Draw()=0;
                virtual bool is_Closed()=0;
        };
        class Polygon:public Shape{
            public:
                bool is_Closed(){return true;}
        };
        
        class Circle:public Shape{
            Point _CENTER;
            unsigned _RADIUS;
            
            public:
                Circle(Point p,unsigned r):_CENTER(p),_RADIUS(r){}
                
                void Rotate(int);
                void Draw();
                bool is_Closed(){return true;}
        };
    }
    #endif
    ik heb die Circle::rotate(int) ook maar even public gemaakt

    [ Bericht 4% gewijzigd door netolk op 06-08-2010 15:17:26 ]
    Beware of the Raping Zebra's
    pi_84939357
    Dat is een header file, geen cpp file.
      vrijdag 6 augustus 2010 @ 15:16:45 #193
    189216 netolk
    maar dan andersom
    pi_84939814
    quote:
    Op vrijdag 6 augustus 2010 15:06 schreef thabit het volgende:
    Dat is een header file, geen cpp file.
    Ja, iknow ik heb geen .cpp file maar die heb ik voor classes toch ook niet nodig??

    Ik heb de functies nog niet verder uitgewerkt, dus nog geen .cpp
    Beware of the Raping Zebra's
    pi_84939909
    Dan zit daar dus het probleem: de functies Circle::Rotate en Circle::Draw zijn alleen gedeclareerd, maar niet gedefinieerd. Dat vindt de linker niet zo grappig (vandaar ook een 'ld' error: het compilen gaat op zich goed, alleen het linken wil niet).
      vrijdag 6 augustus 2010 @ 15:19:35 #195
    189216 netolk
    maar dan andersom
    pi_84939958
    quote:
    Op vrijdag 6 augustus 2010 15:18 schreef thabit het volgende:
    Dan zit daar dus het probleem: de functies Circle::Rotate en Circle::Draw zijn alleen gedeclareerd, maar niet gedefinieerd. Dat vindt de linker niet zo grappig (vandaar ook een 'ld' error: het compilen gaat op zich goed, alleen het linken wil niet).
    Hehe, daar kwam ik idd ook net achter...

    Best wel dom, nouja bedankt in iedergeval
    Beware of the Raping Zebra's
    pi_84940150
    quote:
    Op vrijdag 6 augustus 2010 15:18 schreef thabit het volgende:
    Dan zit daar dus het probleem: de functies Circle::Rotate en Circle::Draw zijn alleen gedeclareerd, maar niet gedefinieerd. Dat vindt de linker niet zo grappig (vandaar ook een 'ld' error: het compilen gaat op zich goed, alleen het linken wil niet).
    Maar hij roept Rotate en Draw niet aan
    pi_84940218
    Nog wat algemene opmerkingen: als je een base class aanmaakt, waar je classes van wilt afleiden, is het raadzaam om ook de destructor virtual te maken. En in de constructor van Circle kun je Point beter als reference doorgeven dan als value.
    pi_84940235
    quote:
    Op vrijdag 6 augustus 2010 15:23 schreef TeringHenkie het volgende:

    [..]

    Maar hij roept Rotate en Draw niet aan
    C++ is geen Python.

    [ Bericht 0% gewijzigd door thabit op 06-08-2010 15:33:57 ]
    pi_84940507
    Wel rare error voor een linkerfout. Maar is het nu gefixed?
      vrijdag 6 augustus 2010 @ 15:46:33 #200
    189216 netolk
    maar dan andersom
    pi_84941123
    quote:
    Op vrijdag 6 augustus 2010 15:31 schreef Cruise.Elroy het volgende:
    Wel rare error voor een linkerfout. Maar is het nu gefixed?
    jep

    quote:
    Op vrijdag 6 augustus 2010 15:25 schreef thabit het volgende:
    Nog wat algemene opmerkingen: als je een base class aanmaakt, waar je classes van wilt afleiden, is het raadzaam om ook de destructor virtual te maken. En in de constructor van Circle kun je Point beter als reference doorgeven dan als value.
    hoe zo als reference dan? kost dan minder resources?

    En die destructor moet ik die in de afgeleide classes ook neerzetten of kan ik dat achterwege laten? (tenzij ik een destructor nodig heb natuurlijk)
    Beware of the Raping Zebra's
    pi_84941323
    Die destructor maak je virtual zodat hij (automatisch) kan worden aangeroepen als je afgeleide klassen destruct. Anders krijg je later evt. memory leaks (hoeft eigenlijk alleen als je destructor echt iets doet maar het is wel goed om het aan te leren)

    En ja, als reference heb je iets minder resources maar in dit geval maakt het niet heel veel uit.
      vrijdag 6 augustus 2010 @ 18:07:12 #202
    189216 netolk
    maar dan andersom
    pi_84947213
    ik heb nog een vraagje bestaat er ook iets als #exclude? aangezien je wel #define en #undef hebt...
    Beware of the Raping Zebra's
    pi_84947322
    Euh? Nee want met #include wordt de file direct in je parser geramd. Dus dat later weer undo-en is niet te doen.

    #include zet de inhoud van de file direct tussen je code, het is niet zoals in Java e.d.
    Je kan dus een losse regel code in een file zetten, en deze dan includen midden in een functie bijvoorbeeld :)
    pi_84948288
    echt, cruise.elroy, jij weet tenminste echt waar je over praat.. O+

    Ik word echt doodmoe van alle programmeurs waarmee ik al heb moeten werken en die, zodra ze hun database connectie niet kunnen instellen via een Wizard, niet weten hoe het moet :')

    Echt schijtziek word ik er van, totaal geen computer kennis meer...
    Wat maakt het nou uit hoe het geheugen werkt, je propt er toch gewoon een extra bankje bij als het te traag wordt :')
    "Wie niet gelooft in wonderen, is geen realist."
    pi_84948486
    quote:
    Op vrijdag 6 augustus 2010 18:39 schreef progje het volgende:
    Echt schijtziek word ik er van, totaal geen computer kennis meer...
    Wat maakt het nou uit hoe het geheugen werkt, je propt er toch gewoon een extra bankje bij als het te traag wordt :')
    Da's een kwestie van economie: goede hardware is tegenwoordig goedkoper dan een goede programmeur.
    pi_84948619
    quote:
    Op vrijdag 6 augustus 2010 18:46 schreef thabit het volgende:

    [..]

    Da's een kwestie van economie: goede hardware is tegenwoordig goedkoper dan een goede programmeur.
    Nou, als de salaris-eis nou ook eens in overeenstemming was met het gewenste niveau..
    Maar dat laat helaas ook nog vaak te wensen over.

    En allemaal zo heerlijk groot ego, ze vinden zichzelf allemaal de beste en overleggen ho maar :r

    verder ben ik niet gefrustreerd hoor. ;)

    Nu werk ik zelf in een omgeving waar ook veel in .Net en C# wordt geprogrammeerd, misschien hoort het ook wel bij dat wereldje ik weet het niet..
    "Wie niet gelooft in wonderen, is geen realist."
    pi_84952114
    quote:
    Op vrijdag 6 augustus 2010 18:49 schreef progje het volgende:

    [..]

    Nou, als de salaris-eis nou ook eens in overeenstemming was met het gewenste niveau..
    Maar dat laat helaas ook nog vaak te wensen over.

    En allemaal zo heerlijk groot ego, ze vinden zichzelf allemaal de beste en overleggen ho maar :r

    verder ben ik niet gefrustreerd hoor. ;)

    Nu werk ik zelf in een omgeving waar ook veel in .Net en C# wordt geprogrammeerd, misschien hoort het ook wel bij dat wereldje ik weet het niet..
    Ik neem aan dat een C++ programmeur wel meer verdient dan iemand die formpjes in elkaar klikt in C#?
    pi_84952820
    Hehe ja dat zeker.. :)

    Maar ik ken ook genoeg Senior C#/asp.net programmeurs die er werkelijk waar geen drol van begrijpen..
    En toch ook een salaris verdienen van in de 4000 euro, maar ja

    Al hebben we ook eens een Senior C++ programmeur in dienst gehad en ik begreep er destijds (als junior) al meer van dan hij :') Maar ja die heb je er altijd tussen zitten he.
    "Wie niet gelooft in wonderen, is geen realist."
    pi_84954344
    Grappig is trouwens wel dat de Assemblies van Microsoft gewoon wrappers om Win32 zijn. Bijvoorbeeld Messagebox.Show roept uiteindelijk gewoon MessageBox aan in user32.dll. Als iets niet kan in C#, is er nog geen developer daar die er een wrapper voor heeft geschreven. _O-

    Conclusie: C# voor de GUI, en de snelle/geavanceerde code stop je in een c++ DLL die je dan DllImport :P
      vrijdag 6 augustus 2010 @ 23:32:28 #210
    189216 netolk
    maar dan andersom
    pi_84960271
    quote:
    Op vrijdag 6 augustus 2010 18:10 schreef Cruise.Elroy het volgende:
    Euh? Nee want met #include wordt de file direct in je parser geramd. Dus dat later weer undo-en is niet te doen.

    #include zet de inhoud van de file direct tussen je code, het is niet zoals in Java e.d.
    Je kan dus een losse regel code in een file zetten, en deze dan includen midden in een functie bijvoorbeeld :)
    Ja daar was ik al bang voor :P, ik dacht miss kan het dus als je in een header a header b include dan kan je dus overal waar a geinclude word ook die van b gebruiken...
    Beware of the Raping Zebra's
    pi_85023483
    quote:
    Op vrijdag 6 augustus 2010 21:16 schreef TeringHenkie het volgende:
    Grappig is trouwens wel dat de Assemblies van Microsoft gewoon wrappers om Win32 zijn. Bijvoorbeeld Messagebox.Show roept uiteindelijk gewoon MessageBox aan in user32.dll. Als iets niet kan in C#, is er nog geen developer daar die er een wrapper voor heeft geschreven. _O-

    Conclusie: C# voor de GUI, en de snelle/geavanceerde code stop je in een c++ DLL die je dan DllImport :P
    Uiteindelijk is elk programma in elke taal op het Windows platform uiteindelijk een wrapper voor de Win32 api, er is geen andere logische manier om Windows "te gebruiken". Hoe hoger het niveau, hoe beter (voor de user) maar (mogelijk) trager. :)
    Dat het anders kan laten Linux ports en Java apps zien, maar daar wordt je echt niet blij van, al is het alleen al het gebruikersgemak, al custom dialogs en lelijke L&F. :X

    Verder kan C# zeker wel sneller zijn dan C++, zelfs sneller dan compiled ASM :o dat komt omdat je stukken (byte)code real-time opnieuw kan compilen naar ASM als de omstandigheden daar toe zijn.
      zondag 8 augustus 2010 @ 21:38:07 #212
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85024137
    Handgeschreven ASM _O_ daar kan geen compiler tegenop *)
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_85025114
    quote:
    Op zondag 8 augustus 2010 21:38 schreef Trollface. het volgende:
    Handgeschreven ASM _O_ daar kan geen compiler tegenop *)
    Als je met handgeschreven stiekem optimaal bedoelt, dan ja. Handgeschreven ASM is vaak alles behalve optimaal. Niet zo gek als je de intel procs zien icm 8086 ASM.

    Vaak kan je met C# talen snelheidswinst halen omdat tight loops run-time herschreven worden naar gelang de variabelen. Natuurlijk kan je dit zelf gaan schrijven in ASM, maar dan ben je echt gek.
      zondag 8 augustus 2010 @ 22:00:15 #214
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85025316
    quote:
    Op zondag 8 augustus 2010 21:56 schreef Cruise.Elroy het volgende:

    [..]

    Als je met handgeschreven stiekem optimaal bedoelt, dan ja. Handgeschreven ASM is vaak alles behalve optimaal. Niet zo gek als je de intel procs zien icm 8086 ASM.

    Vaak kan je met C# talen snelheidswinst halen omdat tight loops run-time herschreven worden naar gelang de variabelen. Natuurlijk kan je dit zelf gaan schrijven in ASM, maar dan ben je echt gek.
    Ik ben nou eenmaal gek :P
    __asm__ {} _O_
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_85025672
    Zonde van je tijd :N ik schrijf eigenlijk alleen maar zware time-critical code en zelfs ik gebruik het eigenlijk nooit. Er is eigenlijk altijd wel een meer (dev)tijd-efficientere manier om snelheid te winnen.
      zondag 8 augustus 2010 @ 22:09:23 #216
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85025783
    push eax
    push ecx
    mov al, 0
    mov cl, 5
    :lp1
    add al, cl
    dec cl
    or cl, cl
    jnz lp1
    pop ecx
    pop eax

    :P
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_85026104
    quote:
    Op zondag 8 augustus 2010 21:24 schreef Cruise.Elroy het volgende:

    [..]

    Uiteindelijk is elk programma in elke taal op het Windows platform uiteindelijk een wrapper voor de Win32 api, er is geen andere logische manier om Windows "te gebruiken". Hoe hoger het niveau, hoe beter (voor de user) maar (mogelijk) trager. :)
    Dat het anders kan laten Linux ports en Java apps zien, maar daar wordt je echt niet blij van, al is het alleen al het gebruikersgemak, al custom dialogs en lelijke L&F. :X

    Verder kan C# zeker wel sneller zijn dan C++, zelfs sneller dan compiled ASM :o dat komt omdat je stukken (byte)code real-time opnieuw kan compilen naar ASM als de omstandigheden daar toe zijn.
    Dat C# sneller kan zijn dan C++ snap ik wel, maar dan is dat (neem ik aan) alleen maar omdat OF je code brakker is, OF omdat je compiler niet kan optimaliseren. Het probleem met C# is alleen dat je voor de eenvoudigste dingen meteen 3 objecten aan moet gaan maken, wat je waarschijnlijk veel geheugen en cpu-tijd kost.
    Hoe zit dat nou met de machinecode die uitgevoerd wordt? Ik heb begrepen dat moderne OSen een HAL om je hardware heen bouwen. Mag ik dan ook aannemen dat machinecode wel direct op je processor draait, en dat er alleen interrupts aangeroepen mogen worden die opgevangen worden door je HAL?
    pi_85026133
    @ ASM
    Tof, maar je code doet niets nuttigs, doet dit bijzonder efficient, en reset zijn waardes aan het einde. :D
    pi_85026255
    quote:
    Op zondag 8 augustus 2010 22:16 schreef TeringHenkie het volgende:

    [..]

    Dat C# sneller kan zijn dan C++ snap ik wel, maar dan is dat (neem ik aan) alleen maar omdat OF je code brakker is, OF omdat je compiler niet kan optimaliseren. Het probleem met C# is alleen dat je voor de eenvoudigste dingen meteen 3 objecten aan moet gaan maken, wat je waarschijnlijk veel geheugen en cpu-tijd kost.
    Hoe zit dat nou met de machinecode die uitgevoerd wordt? Ik heb begrepen dat moderne OSen een HAL om je hardware heen bouwen. Mag ik dan ook aannemen dat machinecode wel direct op je processor draait, en dat er alleen interrupts aangeroepen mogen worden die opgevangen worden door je HAL?
    Je code draait gewoon op je CPU, waar anders op :D Alleen kan je met Protected Mode etc. heel veel dingen afschermen, zoals interrupts, geheugenadressen etc. Een HAL is een low-level variant van een API.
      zondag 8 augustus 2010 @ 22:20:42 #220
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85026321
    quote:
    Op zondag 8 augustus 2010 22:19 schreef Cruise.Elroy het volgende:

    [..]

    Je code draait gewoon op je CPU, waar anders op :D Alleen kan je met Protected Mode etc. heel veel dingen afschermen, zoals interrupts, geheugenadressen etc. Een HAL is een low-level variant van een API.
    Low-level programming is mijn ding :Y
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_85026438
    Waarom ben je dan een webdevver? :D
    pi_85026608
    quote:
    Op zondag 8 augustus 2010 22:19 schreef Cruise.Elroy het volgende:

    [..]

    Je code draait gewoon op je CPU, waar anders op :D Alleen kan je met Protected Mode etc. heel veel dingen afschermen, zoals interrupts, geheugenadressen etc. Een HAL is een low-level variant van een API.
    Dat snap ik, maar de windows kernel mag niet hetzelfde als de HAL, en een applicatie mag niet hetzelfde als de kernel. Hoe wordt dat afgeschermd? Interrupts die worden afgevangen/geblokkeerd oid?
      zondag 8 augustus 2010 @ 22:29:55 #223
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85026765
    quote:
    Op zondag 8 augustus 2010 22:23 schreef Cruise.Elroy het volgende:
    Waarom ben je dan een webdevver? :D
    Dat ik bij FOK! dev wil niet zeggen dat ik alleen aan webdevving doe :P
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_85026779
    Afaik wordt dat idd met interrupts en dergelijke geregeld. Sowieso heb je je eigenlijk geheugen-ruimtes waardoor je niet meer bij iedereen kan rondkijken.
    Details o.a. hier:

    Dit is de processor-side info: http://en.wikipedia.org/wiki/Protected_mode
    En hier heb je de verschillende permissie-"rings": http://en.wikipedia.org/wiki/Ring_(computer_security)
    pi_85026863
    quote:
    Op zondag 8 augustus 2010 22:29 schreef Trollface. het volgende:

    [..]

    Dat ik bij FOK! dev wil niet zeggen dat ik alleen aan webdevving doe :P
    Nee maar iemand die low-level zit te hacken ( :') ) is normaal niet iemand die webdevving echt kan waarderen. ;) En je ASM is niet echt geweldig. nm, de mijne is ook kut
      zondag 8 augustus 2010 @ 22:33:38 #226
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85026927
    De kernel doet o.a. ook zelf interrupts afhandelen dus user-kernelspace kan door de kernel bewaakt worden. :)
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
      zondag 8 augustus 2010 @ 22:34:37 #227
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85026966
    quote:
    Op zondag 8 augustus 2010 22:32 schreef Cruise.Elroy het volgende:

    [..]

    Nee maar iemand die low-level zit te hacken ( :') ) is normaal niet iemand die webdevving echt kan waarderen. ;) En je ASM is niet echt geweldig. nm, de mijne is ook kut
    Je weet toch dat dat een snel in elkaar geflanst stukje code is wat in de praktijk niets doet? :P

    Oh, en ik ben begonnen met webdevven :P ik discrimineer over het algemeen niet mits er een uitdaging in zit. :)
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_85027080
    quote:
    Op zondag 8 augustus 2010 22:30 schreef Cruise.Elroy het volgende:
    Afaik wordt dat idd met interrupts en dergelijke geregeld. Sowieso heb je je eigenlijk geheugen-ruimtes waardoor je niet meer bij iedereen kan rondkijken.
    Details o.a. hier:

    Dit is de processor-side info: http://en.wikipedia.org/wiki/Protected_mode
    En hier heb je de verschillende permissie-"rings": http://en.wikipedia.org/wiki/Ring_(computer_security)
    Dat bedoel ik dus. Wat ik eerst niet snapte, was dat ALLE code op je PC uiteindelijk ook op de CPU stacks zit te pushen en weet ik veel. Hoe zorg je dat dat allemaal niet in de weg zit? Ik neem aan dat als een ander proces CPU-tijd krijgt, jouw registertjes ergens worden opgeslagen, en die andere code z'n waardes weer in de registertjes wordt gestopt :P
    pi_85027164
    quote:
    Op zondag 8 augustus 2010 22:36 schreef TeringHenkie het volgende:

    [..]

    Dat bedoel ik dus. Wat ik eerst niet snapte, was dat ALLE code op je PC uiteindelijk ook op de CPU stacks zit te pushen en weet ik veel. Hoe zorg je dat dat allemaal niet in de weg zit? Ik neem aan dat als een ander proces CPU-tijd krijgt, jouw registertjes ergens worden opgeslagen, en die andere code z'n waardes weer in de registertjes wordt gestopt :P
    Multi-threading en multi-tasking doet zogenaamde context-switching die alles dus idd keurig weg zet. Interrupts e.d. ook natuurlijk:

    http://en.wikipedia.org/wiki/Context_switch
    pi_85027496
    quote:
    Op zondag 8 augustus 2010 22:38 schreef Cruise.Elroy het volgende:

    [..]

    Multi-threading en multi-tasking doet zogenaamde context-switching die alles dus idd keurig weg zet. Interrupts e.d. ook natuurlijk:

    http://en.wikipedia.org/wiki/Context_switch
    HA! Dus eigenlijk was DOS wel een systeem wat multitasking aankon. Immers zouden drivers hun werk nooit kunnen doen :P
      zondag 8 augustus 2010 @ 22:48:46 #231
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85027626
    quote:
    Op zondag 8 augustus 2010 22:46 schreef TeringHenkie het volgende:

    [..]

    HA! Dus eigenlijk was DOS wel een systeem wat multitasking aankon. Immers zouden drivers hun werk nooit kunnen doen :P
    Multitasking is in principe sowieso een must op een OS. :)
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_85028301
    quote:
    Op zondag 8 augustus 2010 22:46 schreef TeringHenkie het volgende:

    [..]

    HA! Dus eigenlijk was DOS wel een systeem wat multitasking aankon. Immers zouden drivers hun werk nooit kunnen doen :P
    Waarom zou je multi-tasking nodig hebben voor drivers? Die hoeven toch niet los van een applicatie iets uit te voeren?
    Nee in DOS werkte alle(?) drivers met interrups, TSR systemen en ingeladen stukken uitvoerbare code. Geen multi-tasking dus.

    Een muis-driver registereerde een stuk code ergens in een interrupttabel (oid), maar die driver voerde dus zelf geen code uit "los" van de applicatie. Die applicatie riep gewoon driver-code aan waar nodig, en wachtte tot deze klaar was.

    Als je code wilde uitvoeren "samen" met een applicatie moest je een timer-interrupt aanzette die gewoon elke zoveel ms triggerde en dan jouw code weer uitvoerde. Zoals een trainer van games bijv. Een programma die in het geheugen ligt te wachten totdat hij wordt uitgevoerd heet een TSR.

    http://en.wikipedia.org/wiki/Terminate_and_Stay_Resident
      zondag 8 augustus 2010 @ 23:02:28 #233
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_85028402
    quote:
    Op zondag 8 augustus 2010 23:00 schreef Cruise.Elroy het volgende:

    [..]

    Nee in DOS werkte alle(?) drivers met interrups, TSR systemen en ingeladen stukken uitvoerbare code. Geen multi-tasking dus.
    Volgens mij heb ik hier de broncode van MS DOS 5.0 nog liggen, maar ik heb geen zin om hem door te spitten. :P
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_85028740
    quote:
    Op zondag 8 augustus 2010 23:00 schreef Cruise.Elroy het volgende:

    [..]

    Waarom zou je multi-tasking nodig hebben voor drivers? Die hoeven toch niet los van een applicatie iets uit te voeren?
    Nee in DOS werkte alle(?) drivers met interrups, TSR systemen en ingeladen stukken uitvoerbare code. Geen multi-tasking dus.

    Een muis-driver registereerde een stuk code ergens in een interrupttabel (oid), maar die driver voerde dus zelf geen code uit "los" van de applicatie. Die applicatie riep gewoon driver-code aan waar nodig, en wachtte tot deze klaar was.

    Als je code wilde uitvoeren "samen" met een applicatie moest je een timer-interrupt aanzette die gewoon elke zoveel ms triggerde en dan jouw code weer uitvoerde. Zoals een trainer van games bijv. Een programma die in het geheugen ligt te wachten totdat hij wordt uitgevoerd heet een TSR.

    http://en.wikipedia.org/wiki/Terminate_and_Stay_Resident
    Maar hoe werkte dat dan als je de muis bewoog? Of als je netwerkkaart data ontving? Werd die pas uit de buffer gehaald als je programma polde of de socket data te verwerken had?
    pi_85031259
    quote:
    Op zondag 8 augustus 2010 21:24 schreef Cruise.Elroy het volgende:

    [..]

    Uiteindelijk is elk programma in elke taal op het Windows platform uiteindelijk een wrapper voor de Win32 api, er is geen andere logische manier om Windows "te gebruiken".
    Volgens mij is dit niet helemaal waar. Als ik in C# een object aanmaak, maakt het framework voor mij een object aan, dat doet de code niet zelf. Ook neem het framework mij GC uit handen. Als ik in C++ een object aanmaak, maakt mijn eigen code voor mij geheugen aan (in een door windows bepaalde geheugenruimte weliswaar). Als voorbeeld: als ik twee ints optel, doet mijn C++ programma dat gewoon in de registers, zonder tussenkomst van een of andere DLL.
      maandag 9 augustus 2010 @ 00:13:07 #236
    189216 netolk
    maar dan andersom
    pi_85032204
    quote:
    Op zondag 8 augustus 2010 23:56 schreef TeringHenkie het volgende:

    [..]

    Volgens mij is dit niet helemaal waar. Als ik in C# een object aanmaak, maakt het framework voor mij een object aan, dat doet de code niet zelf. Ook neem het framework mij GC uit handen. Als ik in C++ een object aanmaak, maakt mijn eigen code voor mij geheugen aan (in een door windows bepaalde geheugenruimte weliswaar). Als voorbeeld: als ik twee ints optel, doet mijn C++ programma dat gewoon in de registers, zonder tussenkomst van een of andere DLL.
    Dat is ook de rede dat zware-/besturingsprogramma's doorgaans in C++ geschreven zijn
    Maar doet C# dat met tussenkomst van DLL's?? Dat zou behoorlijk inefficiënt zijn
    Beware of the Raping Zebra's
    pi_85037660
    quote:
    Op zondag 8 augustus 2010 23:56 schreef TeringHenkie het volgende:

    [..]

    Volgens mij is dit niet helemaal waar. Als ik in C# een object aanmaak, maakt het framework voor mij een object aan, dat doet de code niet zelf. Ook neem het framework mij GC uit handen. Als ik in C++ een object aanmaak, maakt mijn eigen code voor mij geheugen aan (in een door windows bepaalde geheugenruimte weliswaar). Als voorbeeld: als ik twee ints optel, doet mijn C++ programma dat gewoon in de registers, zonder tussenkomst van een of andere DLL.
    Wat is volgens jou het verschl tusen "framework" en "code"? Een C# gaat echt geen DLL gebruiken om ints op te tellen. Het aanmaken van een object gaat ook op eenzelfde manier als in C++, hetzij met iets meer boekhouding. De lijn tussen framework runtime en je "eigen code" is flinterdun, en de compiler zal ze ook gewoon doorelkaar heen compileren.
    GC is wel een andere issue, maar ook deze is enorm geoptimaliseerd en zal niet via DLL wrappers lopen. Wat ik bedoelde was dat alle IO-functies (key-handling, files, audio, video) allemaal via de Win32 API lopen, in elke applicatie.
    pi_85037665
    quote:
    Op maandag 9 augustus 2010 00:13 schreef netolk het volgende:

    [..]

    Dat is ook de rede dat zware-/besturingsprogramma's doorgaans in C++ geschreven zijn
    Maar doet C# dat met tussenkomst van DLL's?? Dat zou behoorlijk inefficiënt zijn
    C# compileert dat gewoon tot snoeiharde ASM
    pi_85037672
    quote:
    Op zondag 8 augustus 2010 23:08 schreef TeringHenkie het volgende:

    [..]

    Maar hoe werkte dat dan als je de muis bewoog? Of als je netwerkkaart data ontving? Werd die pas uit de buffer gehaald als je programma polde of de socket data te verwerken had?
    Al die info stond op je hardware te wachten totdat je het pollde ja. Dat is in Windows nog steeds zo; een driver is geen process, dat zou erg raar zijn.
      woensdag 25 augustus 2010 @ 12:23:26 #240
    189216 netolk
    maar dan andersom
    pi_85683673
    Hey, ik heb problemen met het maken van een ico...

    ik heb op http://www.hackerfactor.c(...)-Ico-Ico-Un-Day.html en op http://en.wikipedia.org/wiki/BMP_file_format gekeken, maar nu werkt de volgende code niet...
    SPOILER
    Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
    bij de raw data copy (die while(!Read.eof()) loop) komt ie nooit aan bij end of file en krijg ik dus een oneindig groot ico file... weet iemand miss wat ik niet goed doe
    Beware of the Raping Zebra's
    pi_85683865
    Hier kun je beter gewoon de file-I/O-functies van C gebruiken in plaats van die streamzooi van C++.
    pi_85685297
    Met operator>> zit je volgens mij formatted data in te lezen, gebruik gewoon getc() oid. Ik weet niet waarom eof() niet triggert, maar ik gebruik het te weinig...

    gooi in je read loopje een std::cout die de char output die net gelezen is (even casten naar int zodat je de waarde krijgt) dan zie je vanzelf waar het fout gaat. Ik kan me voorstellen dat hij bijv. een integer probeert te lezen in binaire stream vol willekeurige bytes, dan leest ie steeds 0 bytes uit als het niet begint met '0' - '9'
    pi_85698949
    quote:
    Op woensdag 25 augustus 2010 12:23 schreef netolk het volgende:
    Hey, ik heb problemen met het maken van een ico...

    ik heb op http://www.hackerfactor.c(...)-Ico-Ico-Un-Day.html en op http://en.wikipedia.org/wiki/BMP_file_format gekeken, maar nu werkt de volgende code niet...
    SPOILER
    Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
    bij de raw data copy (die while(!Read.eof()) loop) komt ie nooit aan bij end of file en krijg ik dus een oneindig groot ico file... weet iemand miss wat ik niet goed doe
    Kijk eens naar de functies seekg en read van fstream. Houd er verder rekening mee dat je structs goed gepacked (dus dat iedere char maar 1 byte inneemt ipv 4)
      donderdag 26 augustus 2010 @ 10:35:42 #244
    189216 netolk
    maar dan andersom
    pi_85721067
    Het maakt niet uit wat ik doe of ik unformatted data lees of unsigned int/char lees hij blijft in een oneindige loop en geeft geen end of file aan...
    Beware of the Raping Zebra's
    pi_85722849
    Wat lees je dan uit, zet die zooi op het scherm en kijk waar het mis gaat. Toch niet zo enorm moeilijk?
      donderdag 26 augustus 2010 @ 12:17:38 #246
    189216 netolk
    maar dan andersom
    pi_85724731
    quote:
    Op donderdag 26 augustus 2010 11:25 schreef Cruise.Elroy het volgende:
    Wat lees je dan uit, zet die zooi op het scherm en kijk waar het mis gaat. Toch niet zo enorm moeilijk?
    nou op een gegeven moment leest ie alleen maar het zelfde getal uit...

    Ik dacht probeer eerst een een ico te lezen maar daar krijg ik ook allemaal rare code uit dus die structs zullen wel weer eens niet kloppen :( nouja dat bekijk ik later wel weer
    Beware of the Raping Zebra's
    pi_85725544
    Die streams die zien het gewoon als een string ofzo. Dus als je de int 1234 op een stream zet met <<, dan zet hij er in feite de string "1234" erop (denk ik). Dat hele streamgebeuren in C++ is geen verbetering ten opzichte van C. (Sowieso kun je voor dit soort simpele file-conversies beter Python gebruiken, maar dat terzijde).
    pi_85725807
    Je moet ook geen << operator gebruiken bij binary streams. Je wilt gewoon byte-voor-byte die data ophalen en wegschrijven met read en write. Als hij nog maar 1 getal uitleest, welke is dat dan? -1 ofzo?
      donderdag 26 augustus 2010 @ 15:08:35 #249
    189216 netolk
    maar dan andersom
    pi_85732185
    quote:
    Op donderdag 26 augustus 2010 12:44 schreef Cruise.Elroy het volgende:
    Je moet ook geen << operator gebruiken bij binary streams. Je wilt gewoon byte-voor-byte die data ophalen en wegschrijven met read en write. Als hij nog maar 1 getal uitleest, welke is dat dan? -1 ofzo?
    nee iets van 236825 ofzo het maakte niet uit of ik binary las en schreef of niet bleef het zelfde getal krijgen...
    Beware of the Raping Zebra's
    pi_85734858
    quote:
    Op donderdag 26 augustus 2010 15:08 schreef netolk het volgende:

    [..]

    nee iets van 236825 ofzo het maakte niet uit of ik binary las en schreef of niet bleef het zelfde getal krijgen...
    Gebruik je nog steeds << ? Want die moet je dus _niet_ gebruiken voor dit soort dingen

    edit: ik zie dat je hele grote getallen krijgt, dus je bent niet byte voor byte binair aan het lezen. Dat moet je wel doen aangezien een BMP/ICO file vol zit met binaire troep.
    Gooi dat getal er eens in HEX uit, misschien iets van 0xFFFF of 0x8000: een of andere errorwaarde.
      donderdag 26 augustus 2010 @ 17:05:43 #251
    189216 netolk
    maar dan andersom
    pi_85736579
    quote:
    Op donderdag 26 augustus 2010 16:18 schreef Cruise.Elroy het volgende:

    [..]

    Gebruik je nog steeds << ? Want die moet je dus _niet_ gebruiken voor dit soort dingen

    edit: ik zie dat je hele grote getallen krijgt, dus je bent niet byte voor byte binair aan het lezen. Dat moet je wel doen aangezien een BMP/ICO file vol zit met binaire troep.
    Gooi dat getal er eens in HEX uit, misschien iets van 0xFFFF of 0x8000: een of andere errorwaarde.
    Probleem is opgelost... Had eerst mn struct maar eens even in C++ geschreven in plaats van die windows meuk met byte enzo en daar hadden ze arrays dus dacht nou dat kan dan ook wel in 1 variabele maar dat kan dus niet XD

    Bedankt iedereen nu kan ik een ICO tenminste lezen, en moet schrijven ook niet zo moeilijk meer zijn...
    Beware of the Raping Zebra's
    pi_85741249
    Euh ok, logisch. ;)
      vrijdag 27 augustus 2010 @ 23:38:46 #253
    189216 netolk
    maar dan andersom
    pi_85792252
    kan iemand mij uitleggen waarom dit niet werkt??
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int main(int argc,char *argv[]){
        for(int i = 0; i < argc; i++){ // tijdelijk
            std::cout << argv[i] << '\n';
        }
        if(argc > 1){
            if(argc == 2){
                if(argv[1] == "/?"){
                    std::cout << '\n' << argv[0] << " [bitmap 1] etc. \n\n";
                    std::cout << "[bitmap] File location of a bitmap (*.bmp)\n";
                    std::cout << "/?       Program help\n";
                }
        }
        return 0;
    }
    als ik mn programma nu aanroep met CreateICO.exe /? dan krijg ik het volgende te zien:
    1
    2
    CreateICO.exe
    /?
    maar dus niet het gedeelte dat in het if-statement staat...

    EDIT: code foutje

    [ Bericht 0% gewijzigd door netolk op 27-08-2010 23:44:59 ]
    Beware of the Raping Zebra's
    pi_85792372
    if(argc = 2) moet if(argc == 2) zijn
      vrijdag 27 augustus 2010 @ 23:45:54 #255
    189216 netolk
    maar dan andersom
    pi_85792574
    quote:
    Op vrijdag 27 augustus 2010 23:41 schreef thabit het volgende:
    if(argc = 2) moet if(argc == 2) zijn
    umja dat klopte idd ook niet maar het is niet de oplossing ik compile overigens met g++ niet dat dat uit zou moeten maken maar toch

    zo doet ie het overigens wel
    1if(argv[1][0] == '/' && argv[1][1] == '?')
    Maar dit word een error als je maar 1 digit mee geeft...
    EDIT: vind ik niet netjes geprogrammeerd en volgens mij zou het bovenste gewoon moeten werken

    [ Bericht 19% gewijzigd door netolk op 28-08-2010 00:07:48 ]
    Beware of the Raping Zebra's
    pi_85793889
    O ja, C heeft geen strings, dus dat zijn dan pointers. Om strings te vergelijken kun je de string klasse van C++ gebruiken. string(argv[0]) == string(argv[1])
      zaterdag 28 augustus 2010 @ 00:21:36 #257
    189216 netolk
    maar dan andersom
    pi_85794114
    ja, nu werkt het idd wel bedankt thabit :)
    Beware of the Raping Zebra's
    pi_85804994
    netolk, je bent bekend met de string-zero opslag in C++ neem ik aan?
    Een string sla je dus op als een reeks char's, en je point dan naar het begin van de string. het einde van de string wordt aangegeven met een nul (als character kan je het schrijven als '\0')

    Als je dus twee strings wilt vergelijken moet je dus het volgende doen:
    1
    2
    3
    4
    5
    6
    7
    8
    bool compareStrings(const char* str1, onst char* str2)
    {
      for (int x = 0; str1[x] != 0 || str2[x] != 0; x++)
      { 
        if (str1[x] != str2[x]) return false;
      }
      return true;
    }
    deze lus loopt de beide strings af totdat er een verschil wordt gevonden, of totdat ze beide tegelijk aflopen. Oh en deze methode is niet optimaal en zit wss vol fouten, gebruik daarom de ingebouwde strcmp() functie.

    Of gebruik de std::string klasse uit de STL lib van C++, maar mss leuk om precies te weten wat je doet.
      zondag 29 augustus 2010 @ 00:25:21 #259
    189216 netolk
    maar dan andersom
    pi_85821591
    quote:
    Op zaterdag 28 augustus 2010 13:44 schreef Cruise.Elroy het volgende:
    netolk, je bent bekend met de string-zero opslag in C++ neem ik aan?
    Een string sla je dus op als een reeks char's, en je point dan naar het begin van de string. het einde van de string wordt aangegeven met een nul (als character kan je het schrijven als '\0')

    Als je dus twee strings wilt vergelijken moet je dus het volgende doen:
    [ code verwijderd ]

    deze lus loopt de beide strings af totdat er een verschil wordt gevonden, of totdat ze beide tegelijk aflopen. Oh en deze methode is niet optimaal en zit wss vol fouten, gebruik daarom de ingebouwde strcmp() functie.

    Of gebruik de std::string klasse uit de STL lib van C++, maar mss leuk om precies te weten wat je doet.
    Dit klinkt idd logisch had ik zelf nog niet aan gedacht :) maar ik heb voor het makkelijkke maar gewoon de std::string gebruikt
    Beware of the Raping Zebra's
    pi_85834415
    Vergeet niet dat je bij elke string() call wel een stukje geheugen alloceert etc. Als je met std::string werkt, probeer dan zo snel mogelijk (en 1-malig) alle inkomende char* naar strings te converteren, en werk daarna met const string& referenties (of pointers) om zo het onnodig aanmaken van strings te voorkomen. :)

    Niet dat je daarmee in de problemen zal komen, tenzij je echt tijdkritieke code gaat schrijven. :)
      maandag 30 augustus 2010 @ 23:35:08 #261
    189216 netolk
    maar dan andersom
    pi_85894240
    quote:
    Op zondag 29 augustus 2010 15:33 schreef Cruise.Elroy het volgende:
    Vergeet niet dat je bij elke string() call wel een stukje geheugen alloceert etc. Als je met std::string werkt, probeer dan zo snel mogelijk (en 1-malig) alle inkomende char* naar strings te converteren, en werk daarna met const string& referenties (of pointers) om zo het onnodig aanmaken van strings te voorkomen. :)

    Niet dat je daarmee in de problemen zal komen, tenzij je echt tijdkritieke code gaat schrijven. :)
    Ik laat hem een tijdelijk object aanmaken voor het if-statement gebeuren

    zoiets als dit
    1
    2
    3
    if(std::string(argv[1]) == "/?"){
      //code
    }
    Beware of the Raping Zebra's
    pi_85895610
    quote:
    Op maandag 30 augustus 2010 23:35 schreef netolk het volgende:

    [..]

    Ik laat hem een tijdelijk object aanmaken voor het if-statement gebeuren

    zoiets als dit
    [ code verwijderd ]


    ja dat mag, maar kijk uit voor bijv:

    1
    2
    3
    4
    if (std::string(bla) == "hoi") func_hoi0();
    else if (std::string(bla) == "hoi1") func_hoi1();
    else if (std::string(bla) == "hoi2") func_hoi2();
    else if (std::string(bla) == "hoi3") func_hoi3();
    maak er dan van:
    1
    2
    3
    4
    5
    std::string blastr = std::string(bla);
    if (blastr == "hoi") func_hoi0();
    else if (blastr == "hoi1") func_hoi1();
    else if (blastr == "hoi2") func_hoi2();
    else if (blastr == "hoi3") func_hoi3();
    Ik weet niet wat de operator==() van std::string allemaal accepteert, het zou zelfs kunnen zijn dat hij de rechterkant ook steeds naar strings zit om te zetten voordat ie vergelijkt.
      donderdag 2 september 2010 @ 07:10:47 #263
    189216 netolk
    maar dan andersom
    pi_85975023
    volgens mij accepterend string ook (const) char strings
    Beware of the Raping Zebra's
    pi_85978540
    Elke keer als je a == b doet, dan wordt de methode operator== van a uitgevoerd, met b als input. Dus a.operator==(b) wordt dan uitgevoerd. Nu zal dat in elk geval voor een const string& b gedefinieerd zijn, maar waarschijnlijk dus ook voor een const char* b.
    pi_85979145
    ja ik had het nagezocht, en dat is idd zo. Vergeet niet dat std::string een specialisatie is van std::basicstring<> maar deze heeft nog extra functies om handig met de "ouderwetse" string0s uit C om te kunnen gaan ;)
    1typedef basic_string<char> string;
      donderdag 2 september 2010 @ 14:26:49 #266
    189216 netolk
    maar dan andersom
    pi_85985153
    quote:
    Op donderdag 2 september 2010 11:12 schreef Cruise.Elroy het volgende:
    ja ik had het nagezocht, en dat is idd zo. Vergeet niet dat std::string een specialisatie is van std::basicstring<> maar deze heeft nog extra functies om handig met de "ouderwetse" string0s uit C om te kunnen gaan ;)
    [ code verwijderd ]

    Top dan kan ik het gewoon zo laten staan dus :P
    Beware of the Raping Zebra's
    pi_85985506
    Dat kan sowieso, als je er 20.000 per seconde gaat doen, dan wordt het pas een issue ;)
      donderdag 2 september 2010 @ 21:17:52 #268
    189216 netolk
    maar dan andersom
    pi_85999381
    quote:
    Op donderdag 2 september 2010 14:37 schreef Cruise.Elroy het volgende:
    Dat kan sowieso, als je er 20.000 per seconde gaat doen, dan wordt het pas een issue ;)
    :P nee dat was ik niet van plan XD maar ik wil wel zo efficiënt mogelijke code schrijven
    Beware of the Raping Zebra's
    pi_85999503
    Premature optimization is the root of all evil.
    pi_86013554
    Ja, maar er vroeg rekening mee houden is wel heel belangrijk. :7
      zaterdag 18 september 2010 @ 10:04:25 #271
    189216 netolk
    maar dan andersom
    pi_86564188
    Is het ook mogelijk om te zien of de knoppen op je toetsenbord zijn pressed/relased zonder de Windows.h header?? Dat het progje zeg maar op elke unix systeem kan draaien
    Beware of the Raping Zebra's
    pi_86633431
    Nee, niet makkelijk volgens mij. Bijna alle standaard I/O is min of meer console-achtig.
    Wat je kan doen is een frame-workje ergens downloaden die cross-platform is en die dingen goed wrapt.
      maandag 20 september 2010 @ 15:05:50 #273
    189216 netolk
    maar dan andersom
    pi_86637373
    quote:
    Op maandag 20 september 2010 13:11 schreef Cruise.Elroy het volgende:
    Nee, niet makkelijk volgens mij. Bijna alle standaard I/O is min of meer console-achtig.
    Wat je kan doen is een frame-workje ergens downloaden die cross-platform is en die dingen goed wrapt.
    hmm.. oke bedankt in ieder geval
    Beware of the Raping Zebra's
    pi_86637624
    Het is trouwens echt een van de meest vervelende "features" van C++, dat je dat niet wat makkelijker kan opvragen, daardoor kan je met "standaard" C++ eigenlijk geen real-time applicaties maken. :P
    pi_86638369
    C++ is dan ook meer een verzameling hacks bij elkaar dan een echte programmeertaal. :P
    pi_86638577
    quote:
    Op maandag 20 september 2010 15:32 schreef thabit het volgende:
    C++ is dan ook meer een verzameling hacks bij elkaar dan een echte programmeertaal. :P
    Troll :D
      maandag 20 september 2010 @ 22:21:05 #277
    189216 netolk
    maar dan andersom
    pi_86656356
    quote:
    Op maandag 20 september 2010 15:32 schreef thabit het volgende:
    C++ is dan ook meer een verzameling hacks bij elkaar dan een echte programmeertaal. :P
    _O- _O-

    quote:
    Op maandag 20 september 2010 15:38 schreef Cruise.Elroy het volgende:
    Troll :D
    Beware of the Raping Zebra's
    pi_86658475
    Face it, mensen: het is niet goed porteerbaar, het heeft geen geheugenmanagement met garbage collector, het heeft geen goede ondersteuning voor parallelisatie (nee, pthread telt niet). 't Is eigenlijk gewoon een verkapte assembly en alleen handig voor kleine libraryfuncties die tot op de bit geoptimaliseerd moeten zijn.
    pi_86658936
    :')
    "Wie niet gelooft in wonderen, is geen realist."
      dinsdag 21 september 2010 @ 08:10:52 #280
    254493 Trollface.
    gr rob fruithof, groningencity
    pi_86663744
    Ga eens ergens anders trollen. :')
    ★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
    pi_86672023
    quote:
    Op maandag 20 september 2010 23:04 schreef thabit het volgende:
    Face it, mensen: het is niet goed porteerbaar, het heeft geen geheugenmanagement met garbage collector, het heeft geen goede ingebouwde ondersteuning voor parallelisatie. t Is eigenlijk gewoon een verkapte assembly en alleen handig voor kleine libraryfuncties die tot op de bit geoptimaliseerd moeten zijn en real-time applicaties en games waar elke ms telt en geheugen vaak de halve GB net haalt.
    Dit klopt allemaal, maar dat komt gewoon omdat de taal op een bepaald abstractieniveau zit. Maakt de taal niet slecht, gewoon krachtiger maar minder geschikt voor RAD.
      dinsdag 21 september 2010 @ 17:01:18 #282
    189216 netolk
    maar dan andersom
    pi_86679606
    quote:
    Op dinsdag 21 september 2010 13:29 schreef Cruise.Elroy het volgende:

    [..]

    Dit klopt allemaal, maar dat komt gewoon omdat de taal op een bepaald abstractieniveau zit. Maakt de taal niet slecht, gewoon krachtiger maar minder geschikt voor RAD.
    _O-
    Beware of the Raping Zebra's
    pi_86680690
    Natuurlijk speel ik advocaat van de duivel hier, maar af en toe heb ik het idee dat de keuze van sommige mensen voor C++ als programmeertaal sterke analogieën met godsdienstwaanzin vertoont.
    pi_86715081
    Met zo'n advocaat moet de duivel maar hopen dat ie niet wordt aangeklaagd.
      woensdag 22 september 2010 @ 21:38:05 #285
    189216 netolk
    maar dan andersom
    pi_86728737
    Goede avond, ik kwam code tegen voor een "chat" programma'tje alleen is dit dus voor linux geschreven en mis ik de volgende headers:
    1
    2
    3
    arpa/inet.h
    netdb.h
    netinet/in.h
    SPOILER
    Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
    Weet iemand hoe ik deze code onder Windows kan laten werken?

    PS. Ik gebruik de mingw compiler...
    Beware of the Raping Zebra's
    pi_86729151
    :o
    pi_86729248
    Onder Windows kan je winsock.h gebruiken, werkt nagenoeg hetzelfde, maar je zal hier en daar wat calls moeten versleutelen.
      woensdag 22 september 2010 @ 21:48:38 #288
    189216 netolk
    maar dan andersom
    pi_86729286
    quote:
    Op woensdag 22 september 2010 21:47 schreef Cruise.Elroy het volgende:
    Onder Windows kan je winsock.h gebruiken, werkt nagenoeg hetzelfde, maar je zal hier en daar wat calls moeten versleutelen.
    Oke bedankt ik zal eens even een beetje gaan kloten met die winsock header en kijken of ik er wat uit kan krijgen...
    Beware of the Raping Zebra's
    pi_86740639
    Nog gelukt? Want winsock zou redelijk gelijk moeten zijn aan de standaard berkley sockets interface, zeker voor simpele apps. :)

    http://en.wikipedia.org/wiki/Berkeley_sockets
      donderdag 23 september 2010 @ 20:29:21 #290
    189216 netolk
    maar dan andersom
    pi_86763691
    quote:
    Op donderdag 23 september 2010 10:08 schreef Cruise.Elroy het volgende:
    Nog gelukt? Want winsock zou redelijk gelijk moeten zijn aan de standaard berkley sockets interface, zeker voor simpele apps. :)

    http://en.wikipedia.org/wiki/Berkeley_sockets
    Nou ik ben eerst maar begonnen met het volgen van een tut ipv dat example te draaien
    Beware of the Raping Zebra's
    pi_86781998
    Net even een snelle echo gedraaid met hulp van een snelle opfris door MSDN. :P
    Dit programma echo'ed alles terug totdat hij een zending binnenkrijgt dat begint met 'x'.

    Enige libfile die je nodig hebt is Ws2_32.lib (in Visual Studio)

    Sockets zijn echt heel simpel, maar je moet het model even doorhebben van sockets en adressen:
    Elke verbinding naar de buitenwereld is een socket (maken met socket())

    Als je een verbinding wilt ontvangen moet je dus een aanspreekpunt hebben. Eerst koppel je een socket aan een adres. (adres = ip + port) met bind() daarna zet je hem op luisterstand met listen()
    Als je zelf verbinding wilt maken gebruik je simpelweg connect()

    Als een verbinding binnenkomt op je luisterende socket, kan deze verbinding worden gebruikt om een nieuwe socket te maken waar je vervolgens mee kan praten met send()/recv(). Dit doe je met accept().
    accept() blijft blocken totdat er een verbinding beschikbaar is. (kan je ook anders instellen overigens)
    Je luister socket blijft overigens ook gewoon doordraaien dus je kan daar steeds accept() op blijven aanroepen om nieuwe inkomende verbindingen op te vangen.

    Hou ook in de gaten dat elke TCP verbinding uniek moet zijn in zijn begin- en eind-adres. dat betekent dat je dus maar 1 connectie kan hebben van een specifiek adres naar een listen socket (die een vast adres heeft). Als je een uitgaande socket aanmaakt met connect() zal het adres van dit socket ook een willekeurige port meekrijgen tenzij je daarvoor expliciet een bind hebt gedaan, zodat je meerdere verbinden kan maken naar een server vanaf 1 IP. :) Als je je netwerkverkeer zit te bekijken wat binnenkomt zal je zien dat de inkomende adressen dus allemaal rare poorten hebben. :P dat is dus by design.

    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
    #include "stdafx.h"
    #include "windows.h"
    #include "iostream"
    #include "stdlib.h"
    #include "winsock.h"
    #include "assert.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
      WSADATA wsadata;
      int result = WSAStartup(MAKEWORD(2,2), &wsadata); //using winsock version 2.2
      assert(result == 0);

      SOCKET listener;
      listener = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

      sockaddr_in localip;
      localip.sin_family = AF_INET;
      localip.sin_addr.s_addr = inet_addr("127.0.0.1");
      localip.sin_port = htons(12345);
      
      result = (bind(listener, (SOCKADDR*) &localip, sizeof(localip)));
      assert(result == 0);

      listen(listener, SOMAXCONN);

      SOCKET incoming;
      incoming = accept(listener, NULL, NULL );
      int error = WSAGetLastError();
      assert(incoming != INVALID_SOCKET);
      closesocket(listener); // close listener, no longer needed, otherwise could be used again


      char buffer[100];
      while (1)
      {
        int bytesreceived = recv(incoming, buffer, sizeof(buffer), 0);
        if (buffer[0] == 'x') break;
        send(incoming, buffer, bytesreceived, 0);
      }
      WSACleanup();
      return 0;
    }
    Enige tricky gedeelte van de code is evt het casten tussen SOCKADDR en sockaddr_in structs. Moet je verder niet te veel op letten, je kan in de headers gaan kijken hoe dat precies zit.

    Oh en htons() en co. zijn functies om endian om te draaien etc. Er zijn ook functies om hostnamen op te zoeken (getaddrinfo()) en nog een hele reeks andere handige functies.

    Let op dat windows naast de standaard socket systemen ook nog allemaal andere toevoegingen heeft gemaakt, die zijn handig maar je kan daarna dus niet makkelijk meer poorten als je die eenmaal gaat gebruiken (beginnen vaak met WSA.....)

    [ Bericht 16% gewijzigd door Cruise.Elroy op 24-09-2010 12:47:18 ]
      vrijdag 24 september 2010 @ 15:24:18 #292
    189216 netolk
    maar dan andersom
    pi_86791568
    Ik heb op deze site ook een paar examples gevonden

    maar die van jou is ook wel handig :P

    bedankt
    Beware of the Raping Zebra's
    pi_86794759
    Leuke site, behandeld ook Overlapped I/O op een goede manier, dat zie je idd niet vaak :Y
      vrijdag 24 september 2010 @ 18:36:48 #294
    189216 netolk
    maar dan andersom
    pi_86799146
    ik heb nu alleen het probleem... Dat example van die site dus (die rot13server) probeer ik te draaien dat werkt gewoon alleen nu heb ik een client gemaakt die daar mee kan "praten". de connect werkt gewoon client kan data verzenden maar de server kan het niet ontvangen... Weet iemand waar het aan kan liggen??

    PS. als ik source code moet posten hoor ik het wel
    Beware of the Raping Zebra's
    pi_86816496
    Is de verbinding in stand gebracht? wat zijn je error-codes voor recv()? gebruik WSAGetLastError om evt extra info te krijgen. :)
      zaterdag 25 september 2010 @ 16:35:41 #296
    189216 netolk
    maar dan andersom
    pi_86831751
    de error die WSAGetLastError geeft is 10054...
    De verbinding is gemaakt ect. en de recv van de server creëert dus die error (10054)

    Op internet staat dat dit de error code is dat de client de connectie verbreekt... Alleen is dit (volgens mij) niet zo

    [ Bericht 31% gewijzigd door netolk op 25-09-2010 17:02:55 ]
    Beware of the Raping Zebra's
    pi_86838570
    Ja dat zal je toch echt even zelf moeten debuggen, ik denk dat de client gewoon de verbinding verbreekt zodra hij verbinding heeft gemaakt. Iig een program-flow fout van jouw kant waarschijnlijk. :)
      zaterdag 25 september 2010 @ 22:46:42 #298
    189216 netolk
    maar dan andersom
    pi_86844565
    quote:
    Op zaterdag 25 september 2010 19:53 schreef Cruise.Elroy het volgende:
    Ja dat zal je toch echt even zelf moeten debuggen, ik denk dat de client gewoon de verbinding verbreekt zodra hij verbinding heeft gemaakt. Iig een program-flow fout van jouw kant waarschijnlijk. :)
    Ja dat klopt idd het is nu opgelost maar ik kan nergens een duidelijk lijstje vinden van de fout codes van WSAGetLastError()...
    Beware of the Raping Zebra's
      zondag 26 september 2010 @ 00:11:04 #300
    189216 netolk
    maar dan andersom
    pi_86847606
    dankje :P
    Beware of the Raping Zebra's
    pi_86890596
    gelukt?
    fuck, nieuw deel [C(++)] voor dummies - Deel 2

    [ Bericht 61% gewijzigd door Cruise.Elroy op 27-09-2010 10:17:29 ]
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')