Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Html-code generieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.05.2003, 18:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
ich versuche für ein Programm von mir QuellCode farbig als Html zu exportieren.

Die Befehle sind unsortiert in einem String mit Kommas getrennt:


C++:
CString strBefehleFarbe1 = "VERSION,SRC,ACT,EQUIP,ITEMDEF";
CString strBefehleFarbe2 = "ON,ITEM";



das färben funktioniert schon, nur:

wenn darin z.b

VERSION=123

vorkommt, färbt er mir

VERSI mit der ersten Farbe, ON mit der 2ten.

Wie könnte ich das bei diesem Färbealgo ändern, damit er nur noch das erste mal den string färbt?


C++:
CString CProgrammDoc::Export2Html(void)
{
  CRichEditCtrl *Ctrl = &GetView()->GetRichEditCtrl();

  CString strLine, strHtml, strKeywords[3], strReplace;
  int iPrev = 0, iFind = -1;

  strKeywords[0] = m_SyntaxColorizer.GetKeywordList(2) + ","; // gibt die Keywörter mit kommas getrenn zurück
  strKeywords[1] = m_SyntaxColorizer.GetKeywordList(1) + ",";
  strKeywords[2] = m_SyntaxColorizer.GetKeywordList(0) + ",";

  for(int x = 0; x < Ctrl->GetLineCount(); x++)
  {
    Ctrl->GetLine(x,strLine.GetBuffer(4096),4096);
    strLine.ReleaseBuffer();
    strLine = HtmlEntities(strLine); // wandelt \n usw in breaks um

    iPrev = 0;
    iFind = strKeywords[0].Find(",");
    while(iFind != -1)
    {
      strReplace.Format("<font color=\"#990000\">%s</font>",strKeywords[0].Mid(iPrev,iFind-iPrev));
      strLine.Replace(strKeywords[0].Mid(iPrev,iFind-iPrev),strReplace);
      iPrev = iFind + 1;
      iFind = strKeywords[0].Find(",",iFind+1);
    }

    iPrev = 0;
    iFind = strKeywords[1].Find(",");
    while(iFind != -1)
    {
      strReplace.Format("<font color=\"#990000\">%s</font>",strKeywords[1].Mid(iPrev,iFind-iPrev));
      strLine.Replace(strKeywords[1].Mid(iPrev,iFind-iPrev),strReplace);
      iPrev = iFind + 1;
      iFind = strKeywords[1].Find(",",iFind+1);
    }

    iPrev = 0;
    iFind = strKeywords[2].Find(",");
    while(iFind != -1)
    {
      strReplace.Format("<font color=\"#000099\">%s</font>",strKeywords[2].Mid(iPrev,iFind-iPrev));
      strLine.Replace(strKeywords[2].Mid(iPrev,iFind-iPrev),strReplace);
      iPrev = iFind+1;
      iFind = strKeywords[2].Find(",",iFind+1);
    }
    strHtml += strLine;
  }
  return strHtml;
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.05.2003, 00:17 Uhr
Christian
C/C++ Master
(Operator)


Hallo Flo,

ich habe das einmal so gemacht, dass ich dann aus:

VERSION =>

taganfang VERSION tagende =>
taganfang V#E#R#S#I#O#N tagende

gemacht habe. Also so, dass ich quasi mir gemerkt habe, dass dieses Wort schon bearbeitet habe.
Zum Schluss habe ich dann einfach alle Dummizeichen entfernt.

Grüße, Christian
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.05.2003, 13:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


das problem ist nur, das es auch keywords mit nur 1em Buchstaben gibt ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: