cout -> outtext [résolu] - C++ - Programmation
Marsh Posté le 25-09-2003 à 21:38:38
J'ai une boucle qui récupère une ligne de mon fichier texte puis qui l'affiche à l'écran jusqu'à la fin du fichier.
Mais je préfère l'afficher avec outtext et donc en utilisant le bgi de borland.
Sauf qu'il n'en veut pas.
Amoins qu'il y ai une autre soluce pour positionner du texte à l'écran.
J'utilise turbo c++.
Marsh Posté le 25-09-2003 à 21:43:07
juste une petite remarque: outtext attends un chaine de charactère (char *) pas autre chose...
Marsh Posté le 25-09-2003 à 21:43:59
par contre regarde si le repère est bon... (à quoi correspond les coordonnées: bord gauche ou droit, haut ou bas atc...)
Marsh Posté le 25-09-2003 à 21:44:37
et quelle police tu utilises avec quels attributs de couleur ? (le fond est il égal à la couleur de la police=> tu vois pas le traçage)
Marsh Posté le 25-09-2003 à 21:48:00
Pour info en turbo pascal j'ai fait ceci:
outtext(20,20,chaine1);
Ca fonctionne très bien.
Je n'atteind même pas l'affichage, vu que lui aussi veut une chaine.
Marsh Posté le 25-09-2003 à 21:52:29
C'est bon j'ai trouvé, c'est ma variable c qui était déclarée en char.
Merci.
Marsh Posté le 25-09-2003 à 22:04:54
amsterdam a écrit : C'est bon j'ai trouvé, c'est ma variable c qui était déclarée en char. |
ha ouais ?
étonnant que tu n'est pas crashé, y doit y avoir des 0 dans les 256 premiers octets de ton segment de données
Marsh Posté le 26-09-2003 à 01:00:39
Bon je vais faire des petites recherches et je revient si je ne trouve rien.
Marsh Posté le 26-09-2003 à 01:25:56
Pour l'instant j'arrive à avoir l'affichage grace à prinf ex:
printf("%c",c);
Y a t'il moyen(surement) de se contenter de mettre le résultat de printf dans une variable string que je pourrait ensuite afficher avec outtext ?
Marsh Posté le 26-09-2003 à 01:54:45
Ma methode (de mairde surement) j attend les coups de latte de taz
Code :
|
Marsh Posté le 26-09-2003 à 02:04:21
Heu......j'ai rien compris.
Sinon il y a sprintf mais je n'y arrive pas.
J'ai ma chaine de départ qui est c(char).
Je voudrait l'envoyer dans une variable chaine c2.
sprintf(c2,%c,c) ne marche pas dans la mesure ou ça m'inscrit un petit bidule qui doit être un c.
|
Marsh Posté le 26-09-2003 à 02:10:11
amsterdam a écrit : Heu......j'ai rien compris.
|
qu est que tu comprend pas ??
string result contient tont text.
il y a une boucle qui copie char par char dans le string result
jusqu a la fin du fichier, et hop il renvoi result.
Marsh Posté le 26-09-2003 à 06:42:27
je verrais plustôt un truc du style:
Code :
|
Marsh Posté le 29-09-2003 à 15:48:11
Apparement il ne reconnait pas ifstream.
Faut il un include particulier pour que ça fonctionne ?
Marsh Posté le 29-09-2003 à 17:11:47
Voici une version qui fonctionne à peu près.
Code :
|
Marsh Posté le 30-09-2003 à 01:11:37
préférer getline(ligne,sizeof(ligne)) à getline(ligne,255)
et le f.close n'est pas obligatoire, le fichier sera automatiquement fermé à la fin du main lors de la destruction de l'objet ifstream.
Marsh Posté le 30-09-2003 à 01:31:16
passke si tu passes de:
char ligne[256];
....
getline(ligne,255) ou 256
à:
char ligne[1024];
getline( ligne, 1023) ou 1024
un sizeof(ligne) t'épargnes la modification de la ligne du getline (gain de temps), et éviter un grosse connerie comme:
char ligne[256];
geline( ligne, 1024);
qui est la porte ouverte aux plantages OU des attaques par dépassement de tampon (t'as ptet entendu parler du virus blaster à la TV ?)
Marsh Posté le 30-09-2003 à 01:40:00
J'ai po la TV. Mais merci pour la leçon.
Sinon comment faire pour récupérer uniquement les lettres dison avant le ;.
Car sur chaque ligne de fichier j'ai le libellé du menu et la commande correspondante.
ps: sans passer par un len quelqonque si possible.
Marsh Posté le 30-09-2003 à 01:54:27
dans ta boucle:
Code :
|
quelque chose comme ceci devrait faire l'affaire:
Code :
|
et tu te retrouves avec BUFFER qui contiens la ligne a afficher, et CMD qui contiens la commande à éxécuter...
Marsh Posté le 01-10-2003 à 17:32:08
Bon n'ayant plus l'internet jusqu'à....(merci ft )
Suite au prochain épisode
Marsh Posté le 02-10-2003 à 20:44:18
Bon de retour sur le nain ternet.
Je vient de m'apercevoir que le fait de refaire mon prog pascal en c/c++ ne résolvait pas mon problème.
Que j'utilise exec avec pascal ou system en c++, ça fonctionne tant que je ne rajoute pas l'utilisation de BGI.
Je vais tenter d'utiliser le mode 13h pour voir si ça passe.
Encore merci aux participants.
Marsh Posté le 02-10-2003 à 21:03:39
bin oui, tu dois faire un closegraph() et revenir en mode texte avant de faire l'exec.....
Marsh Posté le 02-10-2003 à 21:17:40
En effet.
Pour l'instant ça réagit mais j'ai juste un petit curseur qui clignote en haut à gauche.
Marsh Posté le 03-10-2003 à 00:52:55
amsterdam a écrit : En effet. |
ça veux dire qu'il cherche à te parler c'est bon signe
Marsh Posté le 03-10-2003 à 01:11:09
|
n'est ce pas.
Sinon il n'y a q'un closegraph, d'ailleur il n'y a pas de parenthèses après closegraph.
Marsh Posté le 03-10-2003 à 01:13:58
Vi sinon il me met une erreur.
D'ailleur c'est écrit comme ça dans l'aide.
Marsh Posté le 03-10-2003 à 01:14:44
huhu il te mets quoi comme erreur ?
à l'éxécution je paries et pas à la compilation ?
Marsh Posté le 03-10-2003 à 01:34:16
uses crt,graph,dos;
var
tabch:array[0..20] of string;
f:text;
s,cpts,posvs,chaine1,chaine2:string;
c:char;
pilote,mode:integer;
x,y,x1,y1,x2,y2,cpt,posv,rang,doserror:integer;
begin
rang:=1;
cpt:=1;
x:=100;
y:=120;
x1:=90;
y1:=105;
x2:=360;
y2:=140;
pilote:=detect;
initgraph(pilote,mode, 'c:\TP\BGI');
assign(f,'c:\TP\menu.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
chaine1:=copy(s,1,pos(';',s)-1);
tabch[cpt]:=copy(s,pos(';',s)+1,length(s));
outtextxy(x,y,chaine1);
y:=y+40;
cpt:=cpt+1;
end;
close(f);
setcolor(2);
rectangle(x1,y1,x2,y2);
begin
repeat
c:=readkey;
case c of
#80: begin
cpt:=cpt-1;
setcolor(0);
rectangle(x1,y1,x2,y2);
setcolor(2);
rectangle(x1,y1+40,x2,y2+40);
setcolor(0);
rectangle(x1,y1-40,x2,y2-40);
y1:=y1+40;
y2:=y2+40;
end;
#72: begin
cpt:=cpt+1;
setcolor(0);
rectangle(x1,y1,x2,y2);
setcolor(2);
rectangle(x1,y1-40,x2,y2-40);
setcolor(0);
rectangle(x1,y1+40,x2,y2+40);
y1:=y1-40;
y2:=y2-40;
end;
#13: begin
closegraph;
exec('c:\windows\command\edit.com','');
end;
end;
until c=#27;
readln;
end;
end.
Marsh Posté le 03-10-2003 à 14:40:11
hé fo préciser quand tu est en turbo pascal
j'étais resté sur le C/C++...
Marsh Posté le 03-10-2003 à 14:52:45
|
A peu près la même chose en c++, sauf que là le menu s'affiche mais l'appli reste bloquée donc il doit y avoir une autre erreur qui n'as rien à voir avec le BGI.
Marsh Posté le 25-09-2003 à 21:29:50
Salut.
Voilà j'ai un petit problème.
J'arrive à afficher le contenu d'un fichier texte avec cout mais dès que je remplace cout par outtext ça ne marche pas.
version cout:
cout << c;
version outtext:
outtextxy(20,20,c);
Je précise que initgraph va bien car je peut afficher un rectangle.
En fait quand je remplace ma variable c par une chaine ça fonctionne.
Merci d'avance.
Message édité par amsterdam le 25-09-2003 à 21:52:59