Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » automatische Nummerierung von Variablen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
18.09.2007, 07:52 Uhr
~franzi
Gast


Hallo zusammen,
ich hab ein kleines Problem,
und zwar habe ich unterschiedlich viele Geräte über USB an meinen PC angeschlossen,
die Anzahl der Geräte kann ich anfangs ermitteln und anhand dieser anzahl würde ich gerne
Variablen für jedes Gerät automatisch generieren lasse. Bei 3 Geräten z.B. ftHandle1, ftHandle2 , und ftHandle3, wie geht das?

vielen dank , voraus...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.09.2007, 07:58 Uhr
RedEagle



Nimm doch Array!?!?


C++:
NumOfDevices = ...

HANDLE ftHandle[NumOfDevices];

/*
ftHandle[0]  == Grät 1
ftHandle[1]  == Grät 2
ftHandle[n]  == Grät n+1
*/


--
MFG RedEagle

Dieser Post wurde am 18.09.2007 um 07:58 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.09.2007, 08:04 Uhr
~franzi
Gast


danke für den Tip,
ich werd das gleich mal versuchen...

gruß franzi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.09.2007, 08:14 Uhr
~franzi
Gast


es geht leider nicht richtig,
wenn ich folgende Zeile schreibe kommen Fehlermeldungen

FT_HANDLE ftHandle[numDevs];

Fehler:
Konstanter Ausdruck erwartet
Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.
'ftHandle': Unbekannte Größe

wenn ich anstatt numDevs eine feste Zahl nehme geht es...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.09.2007, 10:26 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Bei einem Array muss die Größe zur compilezeit bekannt sein. Entweder du machst numDevs const, schreibst direkt ne Zahl rein oder nimmst einen std::vector.


C++:
#include <string>
#include <vector>
#include <iostream>
#include <iterator>

int main(int argc, char* argv[])
{
    int count = 5;
    std::vector<std::string> vec;
    for(int i = 0; i < count; i++)
        vec.insert(vec.begin(), std::string("Test"));
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    return EXIT_SUCCESS;
}

--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.09.2007, 10:31 Uhr
~franzi
Gast


Kannst du das noch bitte ein bissl ausführlicher beschreiben mit dem std::vector
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.09.2007, 10:36 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


std::vector ist eine Art dynamisches Array. Du kannst es erweitern, wie du es brauchst. Brauchst du noch ein element, hängst du es einfach hinten an und musst dir um den Speicher keine Gedanken machen. Du kannst mit push_back einfach ein Wert von Typ <T> in den Vector einfügen. Ist keine große Sache, schau einfach mal hier:

www.sgi.com/tech/stl/Vector.html
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.09.2007, 13:33 Uhr
Suba Esel



@ J-jayz-Z: Sorry, aber das Beispiel finde ich arg unübersichtlich....
Dieser Code müsste eigentlich genau das selbe machen:


C++:
#include <iostream>
#include <string>
#include <vector>

int main()
{
     int count = 5;
     std::vector<std::string> vec;
     for(int i = 0; i < count; ++i)
     {
          vec.push_back("Test\n");
     }
}


--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.09.2007, 15:01 Uhr
xXx
Devil


Ehm nein müsste er nicht. push_back macht das, was der Name sagt. "schiebe ans ende" ... J-jayz-Z insert-Aufruf führt dazu, dass der neue String am Anfang eingefügt wird. Was allerdings überflüssig ist, ist dass J-jayz-Z std::string vor "Test" angegeben hat.
Dazu hast du die Aufgabe von std::copy vollkommen falsch interpretiert(einfach '\n' deinem String anhängen ... nein?!). Er kopiert den Inhalt des Vektors in den Stream std::cout.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.09.2007, 16:38 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Er macht, wie xXx schon geschrieben hat nicht das selbe
Und da ich mal davon ausgehe, das er (du evtl. auch?!) ein paar der Funktionen nicht kennt hat er damit auch gleich was gelernt ...
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: