Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1796 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  cout -> outtext [résolu]

 



 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

cout -> outtext [résolu]

n°523525
amsterdam
Posté le 25-09-2003 à 21:29:50  profilanswer
 

Salut.
Voilà j'ai un petit problème. :d
 
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
mood
Publicité
Posté le 25-09-2003 à 21:29:50  profilanswer
 

n°523528
Joel F
Real men use unique_ptr
Posté le 25-09-2003 à 21:33:06  profilanswer
 

:heink:  
comprends pas , qu'est ce que tu essaye de faire  :heink:

n°523539
amsterdam
Posté le 25-09-2003 à 21:38:38  profilanswer
 

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++.

n°523550
bjone
Insert booze to continue
Posté le 25-09-2003 à 21:43:07  profilanswer
 

juste une petite remarque: outtext attends un chaine de charactère (char *) pas autre chose...

n°523551
bjone
Insert booze to continue
Posté le 25-09-2003 à 21:43:59  profilanswer
 

par contre regarde si le repère est bon... (à quoi correspond les coordonnées: bord gauche ou droit, haut ou bas atc...)

n°523553
bjone
Insert booze to continue
Posté le 25-09-2003 à 21:44:37  profilanswer
 

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)

n°523558
amsterdam
Posté le 25-09-2003 à 21:48:00  profilanswer
 

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. :(
 

n°523565
amsterdam
Posté le 25-09-2003 à 21:52:29  profilanswer
 

C'est bon j'ai trouvé, c'est ma variable c qui était déclarée en char.
Merci.  :hello:

n°523576
bjone
Insert booze to continue
Posté le 25-09-2003 à 22:04:54  profilanswer
 

amsterdam a écrit :

C'est bon j'ai trouvé, c'est ma variable c qui était déclarée en char.
Merci.  :hello:  


 
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 :D
 

n°523644
amsterdam
Posté le 26-09-2003 à 01:00:39  profilanswer
 

Bon je vais faire des petites recherches et je revient si je ne trouve rien. :)

mood
Publicité
Posté le 26-09-2003 à 01:00:39  profilanswer
 

n°523650
amsterdam
Posté le 26-09-2003 à 01:25:56  profilanswer
 

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 ?

n°523669
xiluoc
un pc pour les unirs ....
Posté le 26-09-2003 à 01:54:45  profilanswer
 


Ma methode (de mairde surement) j attend les coups de latte de taz   :whistle:  
 

Code :
  1. string txtfile::read_txtfile(string file_name)
  2. {
  3. string result;
  4. ifstream file(file_name.c_str());
  5. char ch;
  6. while(!file.eof())
  7. {
  8.         file.get(ch);
  9.         result += ch; 
  10. }
  11. file.close();
  12. return result;
  13. }


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°523674
amsterdam
Posté le 26-09-2003 à 02:04:21  profilanswer
 

Heu......j'ai rien compris.  :D  :D  :lol:  
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.


# include <fstream.h>
# include <iostream.h>
# include <STDLIB.h>
# include <conio.h>
# include <stdio.h>
# include <graphics.h>
 
int main(void)
{
 int graphdriver = DETECT;
 int graphmode= 0;
 initgraph(&graphdriver,&graphmode, "D:\\TC\\BGI" );
 char c2[255];
 char c;
 ifstream from("c:\menu.txt" );
 while
 (from.get(c))
 
 sprintf(c2,"%c",c);
 
 from.close();
 outtextxy(20,40,c2);
 
 getch();
 closegraph();
 
        system("pause" );
 
return 0;
}


Message édité par amsterdam le 26-09-2003 à 02:05:42
n°523677
xiluoc
un pc pour les unirs ....
Posté le 26-09-2003 à 02:10:11  profilanswer
 

amsterdam a écrit :

Heu......j'ai rien compris.  :D  :D  :lol:  
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.


# include <fstream.h>
# include <iostream.h>
# include <STDLIB.h>
# include <conio.h>
# include <stdio.h>
# include <graphics.h>
 
int main(void)
{
 int graphdriver = DETECT;
 int graphmode= 0;
 initgraph(&graphdriver,&graphmode, "D:\\TC\\BGI" );
 char c2[255];
 char c;
 ifstream from("c:\menu.txt" );
 while
 (from.get(c))
 
 sprintf(c2,"%c",c);
 
 from.close();
 outtextxy(20,40,c2);
 
 getch();
 closegraph();
 
        system("pause" );
 
return 0;
}




 
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.  


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°523684
bjone
Insert booze to continue
Posté le 26-09-2003 à 06:42:27  profilanswer
 

je verrais plustôt un truc du style:
 

Code :
  1. ifstream ifs("c:\\menu.txt" );
  2. int y=20;
  3. char BUFFER[256];
  4. while( ifs.getline(BUFFER,sizeof(BUFFER)) && ifs )
  5. {
  6.    outtextxy(10,y,BUFFER);
  7.    y+=20;
  8. }

n°525721
amsterdam
Posté le 29-09-2003 à 15:48:11  profilanswer
 

Apparement il ne reconnait pas ifstream. :/
Faut il un include particulier pour que ça fonctionne ?

n°525774
amsterdam
Posté le 29-09-2003 à 16:21:02  profilanswer
 

Il me manquait:
#include <ifstream>

n°525862
amsterdam
Posté le 29-09-2003 à 17:11:47  profilanswer
 

Voici une version qui fonctionne à peu près. :d

Code :
  1. # include <fstream.h>
  2. # include <iostream.h>
  3. # include <STDLIB.h>
  4. # include <conio.h>
  5. # include <stdio.h>
  6. # include <graphics.h>
  7. int main(void)
  8. {
  9.     int y=20;
  10. char ligne[256];
  11. int graphdriver = DETECT;
  12. int graphmode= 0;
  13. initgraph(&graphdriver,&graphmode, "D:\\TC\\BGI" );
  14. ifstream f("c:\\menu.txt" );
  15. while(f.getline(ligne,255))
  16. {
  17. outtextxy(20,y,ligne);
  18. y = y+80;
  19. }
  20.     f.close();
  21.     closegraph();
  22.     system("pause" );
  23. return 0;
  24. }

n°526543
bjone
Insert booze to continue
Posté le 30-09-2003 à 01:11:37  profilanswer
 

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.


Message édité par bjone le 30-09-2003 à 01:27:34
n°526544
amsterdam
Posté le 30-09-2003 à 01:24:32  profilanswer
 

Petite question en passant.....pourquoi?  :D

n°526545
bjone
Insert booze to continue
Posté le 30-09-2003 à 01:31:16  profilanswer
 

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 ?)

n°526546
amsterdam
Posté le 30-09-2003 à 01:40:00  profilanswer
 

J'ai po la TV. :p Mais merci pour la leçon.  :jap:  
 
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. :)


Message édité par amsterdam le 30-09-2003 à 01:41:27
n°526551
bjone
Insert booze to continue
Posté le 30-09-2003 à 01:54:27  profilanswer
 

dans ta boucle:
 

Code :
  1. while( f.getline(ligne,sizeof(ligne) )
  2. {
  3. }


 
quelque chose comme ceci devrait faire l'affaire:
 

Code :
  1. while( ifs.getline(BUFFER,sizeof(BUFFER),';') )
  2. {
  3.    char CMD[256];
  4.    ifs.getline(CMD, sizeof(CMD) );
  5.    cout<<"Nom: "<<BUFFER<<" -  Commande: "<<CMD<<endl; // ligne de debug pour voar si ça marche
  6. }


 
et tu te retrouves avec BUFFER qui contiens la ligne a afficher, et CMD qui contiens la commande à éxécuter...

n°526552
amsterdam
Posté le 30-09-2003 à 02:00:34  profilanswer
 

:jap:  Je verrait ça demain matin car présentement je  :sleep: .
Merci. :)

n°526554
bjone
Insert booze to continue
Posté le 30-09-2003 à 02:05:33  profilanswer
 

je compatis et vais faire la même chose...

n°527990
amsterdam
Posté le 01-10-2003 à 17:32:08  profilanswer
 

Bon n'ayant plus l'internet jusqu'à....(merci ft  :fou: )
Suite au prochain épisode

n°529709
amsterdam
Posté le 02-10-2003 à 20:44:18  profilanswer
 

Bon de retour sur le nain ternet. :d
Je vient de m'apercevoir que le fait de refaire mon prog pascal en c/c++ ne résolvait pas mon problème.  :cry:  
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.  :hello:  

n°529724
bjone
Insert booze to continue
Posté le 02-10-2003 à 21:03:39  profilanswer
 

:lol:
 
bin oui, tu dois faire un closegraph() et revenir en mode texte avant de faire l'exec.....

n°529738
amsterdam
Posté le 02-10-2003 à 21:17:40  profilanswer
 

En effet.  :jap:  
Pour l'instant ça réagit mais j'ai juste un petit curseur qui clignote en haut à gauche. :/

n°529985
bjone
Insert booze to continue
Posté le 03-10-2003 à 00:52:34  profilanswer
 

attention à pas faire de double closegraph()

n°529987
bjone
Insert booze to continue
Posté le 03-10-2003 à 00:52:55  profilanswer
 

amsterdam a écrit :

En effet.  :jap:  
Pour l'instant ça réagit mais j'ai juste un petit curseur qui clignote en haut à gauche. :/


 
ça veux dire qu'il cherche à te parler c'est bon signe :D

n°529997
amsterdam
Posté le 03-10-2003 à 01:11:09  profilanswer
 


ça veux dire qu'il cherche à te parler c'est bon signe  


n'est ce pas. :d
 
Sinon il n'y a q'un closegraph, d'ailleur il n'y a pas de parenthèses après closegraph. :)

n°530000
bjone
Insert booze to continue
Posté le 03-10-2003 à 01:12:54  profilanswer
 

closegraph;
 
comme ça ? :/

n°530001
amsterdam
Posté le 03-10-2003 à 01:13:58  profilanswer
 

Vi sinon il me met une erreur.
D'ailleur c'est écrit comme ça dans l'aide.

n°530002
bjone
Insert booze to continue
Posté le 03-10-2003 à 01:14:44  profilanswer
 

huhu il te mets quoi comme erreur ?
 
à l'éxécution je paries et pas à la compilation ?

n°530004
amsterdam
Posté le 03-10-2003 à 01:16:12  profilanswer
 

closegraph();
error 85 ';' expected

n°530007
bjone
Insert booze to continue
Posté le 03-10-2003 à 01:24:17  profilanswer
 

mets toute les lignes (avant) pour voir....

n°530009
amsterdam
Posté le 03-10-2003 à 01:34:16  profilanswer
 


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.

n°530314
bjone
Insert booze to continue
Posté le 03-10-2003 à 14:40:11  profilanswer
 

hé fo préciser quand tu est en turbo pascal :lol:
 
j'étais resté sur le C/C++...

n°530342
amsterdam
Posté le 03-10-2003 à 14:52:45  profilanswer
 


# include <fstream.h>
# include <iostream.h>
# include <STDLIB.h>
# include <conio.h>
# include <stdio.h>
# include <graphics.h>
 
 
int main(void)
{
    int y=20;
 char ligne[256];
 int graphdriver = DETECT;
 int graphmode= 0;
 initgraph(&graphdriver,&graphmode, "d:\\TC\\BGI" );
 
        ifstream f("c:\\menu.txt" );
        while(f.getline(ligne,255))
        {
        outtextxy(20,y,ligne);
        y = y+80;
        }
    f.close();
    closegraph();
 
 
    system("c:\\windows\\notepad.exe" );
     
 
    system("pause" );
 
 
return 0;
}


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. :d


Message édité par amsterdam le 03-10-2003 à 15:31:26
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  cout -> outtext [résolu]

 

Sujets relatifs
[C++] Dernier sujet sur les dialogbox [resolu]chtite question sur system [résolu]
Créer automatiquement (sous dos) repertoire avec date [RESOLU][RESOLU]Ma commande SQL INSERT INTO ne fonctionne plus !
SVG 1.1 et xlink : pourquoi c'est plus lent ? [Résolu][VBA] Rapatriement d'une requête ! [Resolu]
[Delphi] Stockage d'un mot de passe. [Résolu][resolu] Synchroniser un texte descriptif et des images en float
une requete sur les resultats d'une autre requete ??? [résolu][resolu] [html] IE fait un passage à la ligne apres un <form>
Plus de sujets relatifs à : cout -> outtext [résolu]


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR