http://www.c-plusplus.net/forum/viewtopic-var-t-is-45173.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39312.html
zum schmöckern und im winapi faq gibts auch noch was.
hm so fällt mir jetzt nichts ein aber du könntest das ziemlich leicht selber machen. Speicher einfach die aktuelle position des cursors mit:
inline void wherexy(int &x, int &y)
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
x = csbi.dwCursorPosition.x;
y = csbi.dwCursorPosition.y;
}
Spring zum anfang deines textes mit:
int gotoxy(short x,short y)
{
HANDLE hConsoleOutput;
CONSOLE_SCREEN_BUFFER_INFO csbi;
COORD Cursor_an_Pos = { x,y};
BOOL bSuccess;
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOutput, &csbi);
bSuccess = SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos);
Pos( bSuccess, "SetConsoleCursorPosition" );
return 0;
}
Dann schreib deinen text in der gewünschten farbe.
Spring wieder mit gotoxy zurück zu der posi die du gespeichert hast.
Das musst einfach in bestimmten abständen machen fertig!
Man könnte da beispielsweise ein objekt erstellen das am anfang einen thread startet dann die aktionen mit sleep timet und als destruktor dann den thread closet.
Vielleicht ist es jetzt etwas kompliziert rübergekommen aber eigentlich finde ich es recht simpel vorallem wenn man so eine schöne Klasse dann nacher hat
mfg tobZel
PS: Wenns leichter geht dann sagts
Wenn es Probleme mit einem bestimmten Wort gibt, liegt das möglicherweise an der Datenbank. Darum solltest du ja einschränken, welche Anweisung den Speicherfehler verursacht.
(das einzige mögliche Problem, das mir im Moment auffält, wäre eine fehlende Null-Terminierung des Strings, den print() zurückgibt)
PS: Und eventuell wäre es eine gute Idee, den Gebrauch von Zeigern etwas einzuschränken (std::string ist eine gute Alternative zu char*).
Ich habe schon lange nicht mit Arrays gearbeitet, aber die Zeile
elements = new ParseTreeElement*[elementCount];
kommt mir komisch vor - besonders der "*" -> ich denke, der gehört hier nicht hin.
Außerdem frage ich mich, warum elements ein Pointer-pointer ist - würde nicht auch ein normaler Pointer reichen? Und wenn es ein Pointer-Pointer ist, müsste dann bei der Zeile oben nicht "*elements =" stehen?
static ParseTreeElement** elements; // Knoten und Blätter die an diesem Knoten hängen
Wenn ich mich irre, würdest Du somit ein Array mit der falschen Grösse anlegen und dann falsch darauf zugreifen.
cheopz schrieb:
Ganz im Ernst: Allein deiner seltsamen Einrückung wegen wird kaum einer den Code jemals lesen.
Ich steige aber schon bei der ersten Zeile aus: warum kann ich einen double-Exponenten angeben, wenn er dann ohnehin wie eine Ganzzahl verwendet wird?
die formatierung lässt sich echt bissel verbessern
double Potensrechnung (double ZahlA, double ZahlB)
{
double Erg = 0.0;
if (ZahlB == 0)
Erg=1;
else if (ZahlB == 1)
Erg= ZahlA;
else{
Erg=ZahlA*ZahlA;
for (int i = 3; i <= ZahlB; i++)
Erg=Erg*ZahlA;
}
return Erg;
}
nicht perfekt aber eine anregung
Es erweist sich, dass selbst die Implementierung von gotos eigenartig schwierig werden kann.
Wäre es nicht besser, deiner Shell eine strukturierte Schleifenkonstruktion (a la for in der bash) zu spendieren?
Wie auch immer. Vielleicht wäre es eleganter, die Eingabedatei nach Sprungzielen zu durchsuchen, bevor sie ausgeführt wird (Stichwort: tokenizing) und dann aufbereitet in einen Puffer zu legen. Das könnte Dir btw yacc oder Bison abnehmen.
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
hui °lern°
Also das mit getchar() weglassen funktioniert, dh. den vorherigen Post was das angeht, nicht beachten.. sorry..
wenigstens gibts jetzt wieder was zu lernen.
Vielen Dank!
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc, char *argv[])
{
int i, j, iWidth, iHeight, iCurrentHeight;
iCurrentHeight = 1;
printf("Bitte Werte eingeben, ( Hoehe, Breite )\n");
scanf("%d",&iHeight);
scanf("%d",&iWidth);
clrscr();
for(i = 1; i <= iHeight; i++)
{
if( (iCurrentHeight == 1) || (iCurrentHeight%iHeight == 0))
{
for(j = 1; j <= iWidth; j++)
{
printf("#");
}
printf("\n");
}
else
{
gotoxy(1,iCurrentHeight);
printf("#");
gotoxy(iWidth,iCurrentHeight);
printf("#\n");
}
iCurrentHeight++;
}
getch();
}
Ich hoffe das hilft dir ein wenig ..
Jetzt fehlt nur noch ein 2d Array für die Funktionalität aber das ist eine andere Geschichte ..
Grüße eF
kannst du das "andere Programm" beeinflussen? Wenn ja, würde ich es so umschreiben, daß du das Kommando optional als Parameter übergeben darfst. Wenn nicht, bleiben dir immer noch DOS-Pipes:
echo start system | prg