Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Pasteo de codigo

Iniciado por Astat, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Astat

                                Esta preunta va dirigida al responsable de los foros...

Habeis pensado en alguna manera para hacer pasteos de codigo fuente en este foro?

Me refiero a algo del estilo del foro de http://www.flipcode.com que sale como metido en una tabla y creo recordar que incluso coloreado.

... ahora que veo el codigo html de flipcode, parece que lo hacen a pelo.. ¿?

ejemplo:






class CGUIPing : public CGUIProgressBar

{

public:

   virtual HRESULT Release() { Destroy(); delete this; return S_OK; }

   // Comentario



   virtual int OnTimer(DWORD id);



   class CMain *m_App;

   DWORD m_dwPingTime;

   bool m_bSendPing;

};





alguna otra forma?                                

synchrnzr

                                No soy el responsable de los foros (Dios me libre :riendo:), pero creo que con los tags CODE y /CODE (entre corchetes, por supuesto)


It does look this way


Mírate el FAQ del foro en caso de duda, es una de las 8 opciones de arriba a la derecha en esta misma página. Pone "preguntas" y está entre "Lista de miembros" y "Salir"

Un saludo

Sync :guay:

[ Este Mensaje fue editado por: synchrnzr el 2002-03-15 14:14 ]

[ Este Mensaje fue editado por: synchrnzr el 2002-03-15 14:15 ]                                

Astat

                                Ya vi lo de CODE /CODE y queda como el culo :agh:

Lo que podemos hacer es usar alguno de los muchos C -> Html que hay y pastear el resultado. Aunque lo suyo es que se curraran una etiqueta nueva que hiciera eso (si usan phpBB tienen todo el codigo y pueden/podriamos hacelo :sonriendo:)

                               

Forum Master

                                Lo sentimos mucho pero tendreis que hacer C -> HTML y pastearlo a palo seco.
                               
tratos

fiero

                                Hola Astat, ¿puedes decir el nombre de algún programilla de esos que dices? el que más te guste, .... yo no sabia ni que existian...

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

Sabreman

                                En http://www.source2html.org hay uno que funciona bastante bien.                                

fiero

                                Hola, estuve buscando por ahí, y encontré este código, ahora no recuerdo ni de donde lo bajé, ni de quien es, pero no pone autor....
Yo lo he modificado un poco para que se vea correctamente en este foro.
Compiladlo como aplicación de consola, después se arrastra el fichero a convertir encima y listo. Para pastear, lo mejor es abrir el html con el navegador, seleccionar ver código, y pillar desde la primera [table ] hasta la ultima [ /table]

   

#include
#include
#include
#include

#define NORMAL_COLOR "#000000"
#define STRING_COLOR "#ff0000"
#define COMMENT_COLOR "#008000"
#define PREPROC_COLOR "#0000FF"
#define RESERVED_COLOR "#0000FF"


/*
                    C / C++ to HTML converter.
        Converts C and C++ code to HTML with syntax hilighting...
*/


char *Reserved_Words[]={"_asm","asm","catch","double","cgoto","return","throw",
           
"volatile","char","else","if","short",
           
"true","while","and_eq","class","enum","inline","operator",
           
"signed","try","auto","compl","explicit","int","or",
           
"sizeof","typedef","xor_eq","bitand","const","extern",
           
"long","or_eq","static","typename","bitor","continue",
           
"false","mutable","private","struct","union","bool","default",
           
"float","namespace","protected","switch","unsigned","break",
           
"delete","for","new","public","template","virtual","case",
           
"do","friend","register","this","void",
           
"__int64","naked","__declspec","_cdecl","_stdcall","*"};
int IsReservedWord (char *word)
{
 
int i=0;

 
while(strcmp(Reserved_Words,"*"))
 {
   
if (!strcmp(word,Reserved_Words))
     
return 1;
   i++;
 }
   
return 0;
}

int fpeek(FILE *f)
{
 
int ch;

 ch = fgetc(f);
 ungetc(ch,f);
 
return ch;
}

void printchar(char inchar, FILE *fstream)
{
 
if ((inchar != '<') && (inchar != '>') && (inchar != '&'))
   fputc(inchar,fstream);
 
else if (inchar == '&')
   fprintf(fstream,
"&");
 
else if (inchar == '>')
   fprintf(fstream,
">");
 
else
   fprintf(fstream,
"<");
}

int Print_HTML(FILE* fstream, char *Title)
{
 FILE *InFile;
 
int  inchar,i,newline = 1,Multi_Line_Comment = 0,WordIdx = 0,colorNormal=1;
 
char word[280];

 
for (i=0; i<280; ++i)
   word = 0;
 
// Print out the HTML header.
 fprintf(fstream,
"nn %s nn",Title);
 fprintf(fstream,
"");
 fprintf(fstream,
"");
 fprintf(fstream,
"
   ");
 fprintf(fstream,
"
n",NORMAL_COLOR);

 
// Now we open the file for reading in text mode.
 InFile = fopen(Title,
"rt");
 
if (InFile == NULL)
   
return -1;

 
// And start reading it in character by character.
 inchar = fgetc(InFile);
 fprintf(fstream,
"",NORMAL_COLOR);
 
while (!feof(InFile))
 {
       
if (inchar == 'n')
       {
           newline = 1;
       }
       
else if (!isspace(inchar))
       {
           
// Handle all preproccessor directives.
           
if ((inchar == '#') && (!Multi_Line_Comment))
           {
               
if (newline == 1)
               {
                   fprintf(fstream,
"",PREPROC_COLOR);
                   
while ((inchar != 'n') && (inchar != ' ') && (inchar > 0))
                   {
                       printchar(inchar,fstream);
                       inchar = fgetc(InFile);
                   }
                   fprintf(fstream,
""
);
                   newline = 1;
                   colorNormal=0;
                   
continue;
               }
           }
           
// Handle single line comments.
           
else if ((inchar == '/') && (fpeek(InFile) == '/') && (!Multi_Line_Comment))
           {
               fprintf(fstream,
"",COMMENT_COLOR);
               
while ((inchar != 'n') && (inchar > 0))
               {
                   printchar(inchar,fstream);
                   inchar = fgetc(InFile);
               }
               fprintf(fstream,
""
);
               newline = 1;
               colorNormal=0;
               
continue;
           }
           
// Handle Multi-line comments.
           
else if ((inchar == '/') && (fpeek(InFile) == '*') && (!Multi_Line_Comment))
           {
               Multi_Line_Comment = 1;
               fprintf(fstream,
"/",COMMENT_COLOR);
               inchar = fgetc(InFile);
               colorNormal=0;
           }
           
else if ((inchar == '*') && (fpeek(InFile) == '/') && (Multi_Line_Comment))
           {
               fgetc(InFile);
               inchar = fgetc(InFile);
               Multi_Line_Comment = 0;
               fprintf(fstream,
"*/",COMMENT_COLOR);
           }
           
// Handle Double Quotes.
           
else if ((inchar == 34 ) && (!Multi_Line_Comment))
           {
               fprintf(fstream,
"%c",STRING_COLOR,34);
               inchar = fgetc(InFile);
               
while ((inchar != 34) && (inchar > 0))
               {
                   printchar(inchar,fstream);
                   inchar = fgetc(InFile);
               }
               inchar = fgetc(InFile);
               fprintf(fstream,
"%c",34);
               newline = 0;
               colorNormal=0;
               
continue;
           }
           
// Handle Single Quotes.
           
else if ((inchar == 39 ) && (!Multi_Line_Comment))
           {    
               fprintf(fstream,
"%c",STRING_COLOR,39);
               inchar = fgetc(InFile);
               
while ((inchar != 39) && (inchar > 0))
               {
                   printchar(inchar,fstream);
                   inchar = fgetc(InFile);
               }
               inchar = fgetc(InFile);
               fprintf(fstream,
"%c",39);
               newline = 0;
               colorNormal=0;
               
continue;
           }
           newline = 0;
       }
       
// Everything else.
       
if (!isalnum(inchar) && inchar!='_')
       {
           
if (IsReservedWord(word) && !Multi_Line_Comment)
           {
               fprintf(fstream,
"%s%c"
                   ,RESERVED_COLOR,word,NORMAL_COLOR,inchar);
           }
           
else
           {
               
if(colorNormal==0 && !Multi_Line_Comment)
               {
                   fprintf(fstream,
"",NORMAL_COLOR);
                   colorNormal=1;
               }
               
for (i=0; i < WordIdx; ++i)
                   printchar(word,fstream);
               
if(inchar==0x9)
                   fprintf(fstream,
"    ");
               
else printchar(inchar,fstream);
           }
           
for (i=0; i < 280; ++i) word = 0;
           WordIdx = 0;
       }
       
else
       {
           word[WordIdx++] = inchar;
       }
       inchar = fgetc(InFile);
   }
   
   fprintf(fstream,
"n
");
   fprintf(fstream,
"
");
   fprintf(fstream,
"n");
   fclose(InFile);
   
return 1;
}

int main(int argc,char *argv[])
{
 FILE *fich;
 
char fichero[255];
 
if (argc < 2)
   {
     printf(
"Usage: %s [Filename]nn",argv[0]);
     
return -1;
   }
 strcpy(fichero,argv[1]);
 strcat(fichero,
".html");
 fich=fopen(fichero,
"w");
 Print_HTML(fich,argv[1]);
 fclose(fich);
 
return 0;
}




un saludo

[ Este Mensaje fue editado por: fiero el 2002-04-07 17:31 ]                                
www.videopanoramas.com Videopanoramas 3D player

BeRSeRKeR

                                Jeje, está muy curioso...¡gracias por postearlo!

Un saludo
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.