Avatar billede coldray Nybegynder
28. november 2004 - 22:10 Der er 20 kommentarer og
1 løsning

Problemer med at komme videre!

Hejsa eksperter!

Jeg har efter noget tid, indset at jeg ikke aner hvordan jeg skal komme videre. Jeg har læst en bog på små 400 sider, hvilket har bidraget en del til min ellers nok så tomme viden inden for c++. Nu er jeg så bare noget til det punkt, at jeg er udemærket klar over hvordan funktioner, pointere, classes, loops, betingelser m.m. fungerer, men jeg har svært ved at benytte det i praksis til noget konstruktivt.

Det er meget fint at være i stand til at benytte det til at lave en console-application med stort set ingen funtionalitet.. men hvordan kommer jeg videre? er der nogle tutorials? Vil evt. gerne finde nogle små sider med f.eks. console-app. spil eller lign..

Jeg er den glade ejer af Microsoft Visual C++, så det burde kunne lade sig gøre at komme i gang med at lave noget visuelt? :)
Selvom jeg besidder en vis viden, er jeg udmærket klar over at jeg har en masse mangler :)

Lidt hjælp til at lave et lille console-baseret spil eller noget, ville helt sikkert gavne - det ville være utroligt motiverende at se at det man laver, faktisk har en form for funktionalitet, i stedet for de små apps som udregner areal og lign ;)
Avatar billede arne_v Ekspert
28. november 2004 - 22:19 #1
Det burde ikke være så svært at finde på nogle opgaver med lidt mere udfordring i.

1)  Lav en klasse som understøtter arbitrært store integers

2)  Lav en klasse som kan flytte bookmarks fra IE til FF og omvendt

etc.etc.

Der er masser af special emner du kan kaste dig over:

- Win32 API GUI
- MFC GUI
- database ODBC API
- database MFC OLE DB API
- database MySQL API

var nogle af de mere oplagte

Og det er altid godt at kunne noget finere OOP, så GoF patterns er også relvant
at studere.
Avatar billede coldray Nybegynder
28. november 2004 - 22:33 #2
Umiddelbart lader det til at Win32 API og MFC er utrolig ens.. hvad er forskellen?
Avatar billede coldray Nybegynder
28. november 2004 - 22:34 #3
Mht. til de to øverste opgaver.. der er jeg helt lost.. som sagt er jeg selvlært, ved hjælp af en begynderbog der indeholder classes, functions ect.. har ingen anelse om hvordan jeg skal gøre det ;P
Avatar billede arne_v Ekspert
28. november 2004 - 22:42 #4
Win32 API : C altså proceduralt, alle Windows compilere, low level
MFC : C++ altså objektorienteret, kun MS Visual C++ og Borland C++ Builder, high level
Avatar billede arne_v Ekspert
28. november 2004 - 22:45 #5
Måske skal du så starte midt imellem.

Hvad med et program med en klasse som beskriver en bog (eller CD eller noget andet),
flere bøger opbevares i f.eks. en STL vector, ved program opstart læses
alle bøger op fra en fil, ved program afslutning gemmes ale bøger til en fil,
programmet har en menu hvor man kan vælge vis alle, tilføj en og slet en.
Avatar billede coldray Nybegynder
29. november 2004 - 22:05 #6
Har fundet frem til følgende kode fra SLT biblioteket:

// io/cat1. cpp
// header files for file I/O
#include <fstream>
#include <iostream>
using namespace std;

/* for all file names passed as command-line arguments
* - open, print contents, and close file
*/
int main (int argc, char* argv[])
{
ifstream file;
// for all command-line arguments
for (int i=1; i<argc; ++i) {
// open file
file.open(argv[i]);
// write file contents to cout
char c;
while (file.get(c)) {
cout.put(c);
}
// clear eofbit and failbit set due to end-of-file
file.clear();
// close file
file.close();
}
}

Som routineret ASP/Visual Basic koder, finder jeg det rimeligt svært at overskue hvor jeg skal definere, hvilken fil der skal arbejdes med.. og compileren giver også fejl, fordi int main ikke returnerer nogen værdi.
Avatar billede arne_v Ekspert
29. november 2004 - 22:12 #7
Indrykning !!
Avatar billede arne_v Ekspert
29. november 2004 - 22:13 #8
#include <fstream>
#include <iostream>

using namespace std;

/* for all file names passed as command-line arguments
* - open, print contents, and close file
*/
int main (int argc, char* argv[])
{
  ifstream file;
  // for all command-line arguments
  for (int i=1; i<argc; ++i)
  {
      // open file
      file.open(argv[i]);
      // write file contents to cout
      char c;
      while (file.get(c))
      {
        cout.put(c);
      }
      // clear eofbit and failbit set due to end-of-file
      file.clear();
      // close file
      file.close();
  }
  return 0;
}
Avatar billede arne_v Ekspert
29. november 2004 - 22:13 #9
Jeg satte også lige en return 0 ind til sidst ...
Avatar billede coldray Nybegynder
29. november 2004 - 22:17 #10
Jeg står bare i en situation som jeg ikke har været i før (ja, jeg er rimelig newbie ;), for mig ligner selve main nu en funktion med to parametre. Sådan som jeg læser det, skal jeg definere argc som en eller flere stier, hvor og hvordan? argc = "path" ?
Avatar billede arne_v Ekspert
29. november 2004 - 22:20 #11
Hvis nu dit program hedder xxxx.cpp så builder du det og får en xxxx.exe

Så kan du køre det som:

xxxx a.dat b.dat

så vil programmet vise de 2 filer fordi

argc = 3
argv[0] = "xxxx.exe"
argv[1] = "a.dat"
argv[2] = "b.dat"
Avatar billede coldray Nybegynder
29. november 2004 - 22:27 #12
ahh.. simpelt.. fortolkede det bare forkert.. så.. man benytter bare commandline parametre ;)
Avatar billede arne_v Ekspert
29. november 2004 - 22:28 #13
jep

argumenterne til main er argumenterne til programmet
Avatar billede coldray Nybegynder
29. november 2004 - 23:02 #14
Hvorfor kan jeg ikke gøre dette?:

    vector<string> vTitler;
    vector<string> vStatus;

    vTitler.insert (vTitler.begin, "Spiderman");
    vTitler.insert (vTitler.begin, "Spiderman 2");

    vStatus.insert (vTitler.begin, "På lager.");
    vStatus.insert (vTitler.begin, "På lager.");
Avatar billede coldray Nybegynder
29. november 2004 - 23:03 #15
F:\MyProjects\class\class.cpp(21) : error C2664: 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *__thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::insert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,const class std::basic_string<char,st
ruct std::char_traits<char>,class std::allocator<char> > &)' : cannot convert parameter 1 from 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *(void) const' to 'class std::basic_string<char,struct std:
:char_traits<char>,class std::allocator<char> > *'
        Context does not allow for disambiguation of overloaded function
F:\MyProjects\class\class.cpp(22) : error C2664: 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *__thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::insert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,const class std::basic_string<char,st
ruct std::char_traits<char>,class std::allocator<char> > &)' : cannot convert parameter 1 from 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *(void) const' to 'class std::basic_string<char,struct std:
:char_traits<char>,class std::allocator<char> > *'
        Context does not allow for disambiguation of overloaded function
F:\MyProjects\class\class.cpp(24) : error C2664: 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *__thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::insert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,const class std::basic_string<char,st
ruct std::char_traits<char>,class std::allocator<char> > &)' : cannot convert parameter 1 from 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *(void) const' to 'class std::basic_string<char,struct std:
:char_traits<char>,class std::allocator<char> > *'
        Context does not allow for disambiguation of overloaded function
F:\MyProjects\class\class.cpp(25) : error C2664: 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *__thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::insert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,const class std::basic_string<char,st
ruct std::char_traits<char>,class std::allocator<char> > &)' : cannot convert parameter 1 from 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *(void) const' to 'class std::basic_string<char,struct std:
:char_traits<char>,class std::allocator<char> > *'
        Context does not allow for disambiguation of overloaded function
Avatar billede arne_v Ekspert
29. november 2004 - 23:08 #16
Prøv:

    vTitler.insert (vTitler.begin(), "Spiderman");
    vTitler.insert (vTitler.begin(), "Spiderman 2");

    vStatus.insert (vTitler.begin(), "På lager.");
    vStatus.insert (vTitler.begin(), "På lager.");
Avatar billede arne_v Ekspert
29. november 2004 - 23:08 #17
og et svar
Avatar billede coldray Nybegynder
29. november 2004 - 23:09 #18
nu blev det til 4 warnings i stedet, skal disse blot ignoreres?
Avatar billede arne_v Ekspert
29. november 2004 - 23:11 #19
Hvad hedder de warnings ?
Avatar billede coldray Nybegynder
29. november 2004 - 23:12 #20
F:\MyProjects\class\class.cpp(27) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::c
har_traits<char>,std::allocator<char> > const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,int>' : identifier was truncated to '255' characters in the debug information
F:\MyProjects\class\class.cpp(27) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_tr
aits<char>,std::allocator<char> > &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,int>' : identifier was truncated to '255' characters in the debug information
f:\microsoft visual studio\vc98\include\vector(39) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::vector<std
::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
f:\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::~vector<st
d::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
Avatar billede arne_v Ekspert
29. november 2004 - 23:14 #21
Den ved jeg ikke hvad skyldes.

Jeg synes heller ikke at den ser forudroligend eud.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester