Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Fehlermeldung: int wird TColor zugewiesen

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 <
000
19.12.2008, 18:44 Uhr
Dominik_88



Hi zusammen

Ich will gerne Schiffe versenken programmieren und ich will gerne blau als benutzerdefinierte Farbe fürs Wasser benutzen.

Mein Programm Unit sieht folgendermaßen aus:


C++:
void __fastcall TForm1::Label1Click(TObject *Sender)
{
if (farbe==1) Label1 -> Color = clYellow;
if (farbe==2) Label1 -> Color = 0x002222DD;
if (farbe==3) Label1 -> Color = 0x00DF5031;
if (farbe==4) Label1 -> Color = 0x008A3228;
}



Wenn ich auf Start klicke, dann erscheint das Programm und auch die Meldung wird erschien:

[C++ Warnung] Unit1.cpp(384): W8018 int wird TColor zugewiesen.

Da Schiffe Versenken zweimal 100 Felder hat, muss ich für 200 Labels dasselbe machen und irgendwann sind die Warnungen zu viel, so dass das Programm nicht mehr gestartet werden kann wegen:

[C++ Warnung] Unit1.cpp(384): E2228 Zu viele Fehlermeldungen oder Warnungen

Wie muss ich programmieren, dass z.B. 0x002222DD von int zu TColor zugewiesen werden kann, ohne die Fehler- oder Warnungmeldungen zu erscheinen.

Gruß Dominik

Dieser Post wurde am 19.12.2008 um 20:35 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.12.2008, 19:07 Uhr
0xdeadbeef
Gott
(Operator)


Wahrscheinlich einfach casten:

C++:
if (farbe==2) Label1 -> Color = TColor(0x002222DD);


...allerdings solltest du dir wirklich überlegen, mit einem Array von Labels und einer Schleife zu arbeiten. So schreibst du dich ja jedes mal dumm und dämlich, wenn sich an dem Code was ändert.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.12.2008, 20:03 Uhr
Dominik_88



Hi

Vielen Dank für die Antwort.

Bei mir sieht zur Zeit so aus:


C++:
void __fastcall TForm1::Label1Click(TObject *Sender)
{
if (farbe==1) Label1 -> Color = clYellow;
if (farbe==2) Label1 -> Color = TColor(0x002222DD);
if (farbe==3) Label1 -> Color = TColor(0x00DF5031);
if (farbe==4) Label1 -> Color = TColor(0x008A3228);
}



... Label2, Label3,..., Label199 ...


C++:
void __fastcall TForm1::Label200Click(TObject *Sender)
{
if (farbe==1) Label200 -> Color = clYellow;
if (farbe==2) Label200 -> Color = TColor(0x002222DD);
if (farbe==3) Label200 -> Color = TColor(0x00DF5031);
if (farbe==4) Label200 -> Color = TColor(0x008A3228);
}



Es wäre schön, wenn du mir einen Tipp geben kannst, wie man mit dem Array von Labels und mit der Schleife programmieren kann. Also von 200 Labels auf eine Label zu bekommen. Beachte, dass sich nur auf diese Label bezieht z.B. ich klicke bei Label59 und die Farbe ändert sich auch nur bei Label59.
Ich hatte erst seit letztes Jahr Informatik und mir hat das Programmieren so großen Spaß gemacht, dass ich auch Spiele programmieren will, aber nur ich weiß noch nicht alles von C++, aber einige wie z.B. Timer1 oder das Schreiben bzw. Lesen von Variablen.

Ähnlich bei Minesweeper habe ich beim Klicken vom "Neuen Spiel" so programmiert:

x1=0;
x2=0;
x3=0;
...
x143=0;
x144=0;

Das braucht viele Schreibweise. Kann man auch mit dem Array von Labels und mit der Schleife arbeiten, um die Schreibweise zu vermindern?

Gruß Dominik

Dieser Post wurde am 19.12.2008 um 20:35 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


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: