005
31.03.2006, 00:06 Uhr
Spacelord
Hoffnungsloser Fall
|
C++: |
WORD oldColor = csbi.wAttributes; //imho besser weil selbsterklärend SetConsoleTextAttribute(hOut, FOREGROUND_RED|FOREGROUND_INTENSITY); cout << "Farbe Rot\n"; SetConsoleTextAttribute(hOut, oldColor);
|
Hi,du könntest zwar csbi.wAttributes direkt als Parameter übergeben,aber wenn es nicht unbedingt auf optimale Speicherverwendung ankommt würde ich dazu tendieren die alten Farbwerte sofort in ner seperaten Variable zu speichern. Zumindest für mich hat es nen etwas bitteren Beigeschmack mit einer nicht mehr aktuellen Status Struktur ,wie z.B. CONSOLE_SCREEN_BUFFER_INFO,bei der ich persönlich implizit davon ausgehe dass es sich um den aktuellen "Snapshot" handelt,im weiteren Verlauf noch weiterzuarbeiten.Zumindest würde ich der Variablen der Struktur dann nen aussagekräftigeren Name geben wie z.B. old_csbi oder so,der deutlich macht dass es sich nicht um den aktuellen Zustand handelt. Genauso wie der Parameter von SetConsoleTextAttribut.Anstatt da ne 12 hinzuschreiben solltest du dir die Mühe machen die entsprechenden Konstanten zu benutzen. Zum einen bist du damit sicher gegen etwaige Änderungen der Werte hinter den Konstanten und zum anderen wird der Code dadurch einfach besser lesbar. Das mag zwar alles in nem 10zeiligen Programm keine Rolle spielen,aber wenn du nen umfangreiches Projekt nach nem Jahr oder 2 mal wieder anschaust wirst du froh sein wenn du auf solche Kleinigkeiten geachtet hast.
Zitat von ~Black Hell: |
Und noch eine dumme Frage...ist das so üblich de nbuffer als csbi zu deklarieren? Oder ist des egal?
|
Also speziell für diese Struktur ist diese Abkürzung sehr gängig.Natürlich könntest du die Variable auch "OmasSockenStopfNadel" oder "Telefonmann" nennen aber......siehe oben
Das mit den Bitprüfungen kannst du vergessen.Da hatte ich nur nicht richtig gelesen und dachte du würdest dich dafür interessieren welche Farbe die Konsole aktuell hat...
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes. Dieser Post wurde am 31.03.2006 um 00:10 Uhr von Spacelord editiert. |