Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo!

Ich würde gerne einen Schriftzug in einer Konsolenanwendung blinken lassen. Geht das, und wenn ja mit welchem Befehl?

Bine

ich denke mal so eine funktion wirste dir für c selber schreiben müssen; zeitgesteuert den text löschen und hinschreiben ...

Welchen Compiler nutzt du denn??

Bei Borland gehts glaube ich mit dem Befehl TEXTCOLOR(WHITE+BLINK);

Bei Microsoft kann ich es dir leider nicht sagen! :(

Ich arbeite mit dem Visual Studio (also Visual C++).

@Poldi: Welche Funktion soll ich denn da für eine Art Timer nehmen?

Bine

Hmm, ich fürchte das funktioniert nicht. Ich möchte während mein Programm läuft (und der User nur warten kann) blinkender Weise 'SYSTEM ARBEITET' ausgeben.

Da kann ich aber keine Sleep Funtkion einbauen.

Ne Idee wie ich das lösen kann?

Bine

Wie meinst DU das?

Bine

naja ich koennt ja jetzt erzaehlen, wie ich das mein....gehen wuerds wohl, aber ich bin gerade stark am zweifeln.

Irgendwie muss es doch auch viel einfacher gehen so ne "doofe" blinkeschrift hinzukriegen :)

Ich werd ma gucken ob ich was find.

Danke!

Bine

Original geschrieben von Woodstock

Ich arbeite mit dem Visual Studio (also Visual C++).

...

Da wirst Du wohl Pech haben. VC++ nutzt nämlich eine andere, eingeschränkte Version der "conio.h". Diese Version enthält aber keine Definitionen für Farben mehr, wie das z. B. bei Borland noch der Fall ist. Allerdings ist es nicht möglich, die Borland-Header-Datei für VC++ zu nutzen. Da streikt der Compiler. :(

Grüsse

DocMabuse

Nuja Farben ansich gibts dann ja in der wincon.h.

Ueber SetConsoleTextAttribute() kriegt man ja ganz nett Farben rein, aber im Moment hab ich echt keine Idee, wie man auf relativ einfache Art den Text dann auch noch zum blinken bringt.

Goos

conio.h gehört nicht zum Standard und deswegen kocht da jeder Hersteller sein eigenes Süppchen. (Da kann man mal sehen, wie nützlich es ist einen Standard zu haben. Oder man ärgert sich jetzt darüber, daß der Standard keine schönen Textausgaben vorgesehen hat.) Natürlich kann man die Header-Dateien nicht austauchen. Denn in Header-Dateien stehen ja (fast) nur Deklarationen und keine Definitionen der Klassen und/oder Funktionen. Ich persönlich würde ja auf das Blinken verzichten...

Jan

Und Woodstock?...blinkt schon was?

Haste vielleicht irgendwas halbwegs einfaches gefunden?

*neugierigbin*

(...mir is leider keine wirklich einfache löesung eingefallen)

Goos

Nein, ich habe nichts. Naja, dann muss es eben ein einfacher Schriftzug tun. Ist nur irgendwie doof, weil man denken könnte das Programm ist abgestürzt, weil es recht lange braucht.

Bine

Wie wäre es damit: Du setzt in regelmäßigen Abständen (z.B. wenn eine Datei durchsucht wurde), an immer dieselbe Stelle des Bildschirms nacheinander die Zeichen - / | \.

Das sieht dann aus wie ein sich drehender Strich, und der Benutzer sieht, dass das Programm noch läuft.

Alternativ sind immer länger werdende Linien von Punkten oder eine Prozentanzeige möglich, wobei Du bei letzterer wissen müsstest, wieviel insgesamt zu erledigen ist.

Hmmmm scheint wohl echt nich grad einfach zu sein so ne Schrift blinken zu lassen.

So wie ich das oben schonmal erwaehnt hab gehts ja schon, aber ich finds schon n bissl umstaendlich nur um ne Schrift blinken zu lassen.

Wennd magst, kannsts aber so machen Woodstock.

#include "stdafx.h"
#include <conio.h>
#include "Windows.h"

unsigned long __stdcall blingn(LPVOID lParam);

int main(int argc, char* argv[])
{
bool ende_flag;
ende_flag = false;

CreateThread(NULL, 0, blingn, &ende_flag, 0, NULL);

Sleep(1000);
printf("irgendwas");
Sleep(1000);
printf("irgendwas muss");
Sleep(1000);
printf("irgendwas muss ich hier ja machen");
Sleep(1000);

ende_flag = true;




getch();
return 0;
}

unsigned long __stdcall blingn(LPVOID lParam)
{

int test;
COORD cor;
cor.X = 10;
cor.Y = 10;
bool *ende_flag;
ende_flag = (bool *) lParam;

while(*ende_flag == false)
{
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cor);
test = SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | BACKGROUND_GREEN );
cprintf("Hello World!\n");
Sleep(100);

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cor);
test = SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | BACKGROUND_RED );
cprintf("Hello World!\n");
Sleep(100);

}

return true;
}
[/PHP]

Ich hab das ma schnell gebastelt...is wohl nich wirklich toll, aber es funzt :D

(ich hoff mal, dass es nicht wirklich ueber irgendn flag geht die Schrift zum blinken zu bringen, sonst werd ich hier sicher noch

gesteinigt :) )

Goos

@ Klotzkopp:

Es handelt sich hierbei aber nicht um das Programm. Es ist ein weitergehendes. Dieses Programm ist eine Art Suchmaschine welche auf die jetzt fertig erstellte Index Datei zugreift. Hier wird nur eine Datei geöffnet. Und er befindet sich in einer Schleife in der ungefähr drei vier oder noch mehr Minuten sich aufhält, und sonst nichts (sichtbares) geschieht.

Bine

Mich wuerde aber doch sehr interessieren, ob es da nicht irgendwas ganz einfaches zum Thema blinken gibt, also falls jemand ne Moeglichkeit hat bitte melden, ich koennt das naemlich ganz gut brauchen :)

Goos

Ich habe keine Ahnung worum es in diesem Programm geht, deswegen bitte das Folgende nicht als Angriff ansehen. Vielleicht geht es ja nicht anders.

Wenn ich mich aber 4 Minuten in einer Schleife (ich habe es jetzt so verstanden, daß Du etwas suchst), dann würde ich meine CPU-Zeit nicht damit "verschwenden", eine Schrift zum Blinken zu bringen. Ich würde vielmehr schauen, ob es nicht Möglichkeiten gibt, die Suche zu beschleunigen.

Persönlich finde ich es schon ein wenig heftig einen Thread zu starten, um Text zum Blinken zu bringen. Vielmehr würde ich schauen, ob ich nicht einen Interrupt finde, den man dafür benutzen könnte. Will meinen: Ich würde mich in eine Interruptbehandlung einklinken.

Jan

Nun, ich kann das Programm nicht mehr beschleunigen. Am Anfang lief es ca. 1,5 Stunden, jetzt, dadruch das ich auf verzeigerte Listen umgestiegen bin, läuft es noch knapp 5 Minuten. Und das fast nur in der einen Schleife. Und sorry wenn ich nicht weiß ob es in C/C++ so einen 'Befehl' gibt. Ich weiß in der Schule in Turbo Pascal gibt es so einen. Und das war es ich wissen wollte.

Bine

"Und sorry wenn ich nicht weiß ob es in C/C++ so einen 'Befehl' gibt." Was soll das denn? Habe ich irgendetwas dazu gesagt, daß man irgendetwas wissen müßte? Ich glaube es ist normal wenn man etwas nicht weiß. Ich habe mit dem ersten Posting nur erklären wollen, daß man Header-Dateien nicht einfach austauschen kann. Mit meinem zweiten Posting wollte ich Dich keineswegs angreifen und habe dies auch gleich in den ersten Satz hineingeschrieben. Ein Threadwechsel ist auch nicht kostenlos, er kostet Zeit und das bedeutet, daß Deine Suche noch länger dauert. Das meinte ich mit verschwenden. Wenn Du Dich angegriffen fühst, dann tut es mir leid, ich kann nur nochmal sagen, daß dies nicht meine Absicht war.

Jan

Was meinst Du mit Threadwechsel? Ich kenne Threads nur hier aus dem Forum.

Bine

Ich glaube wir haben hier aneinander vorbeigeredet. Ich dachte Du meinst diese Thread hier, in diesem Forum den ich aufgemacht habe um herauszufinden ob es einen Befehl gibt damit ein Schriftzug blinkt. Aber inzwischen denke ich, das ein Thread auch etwas aus der Sprache C/C++ ist.

Bine

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.