Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: вопрос насчет if

Писал небольшую программку, заметил то ли глюк, то ли свою ошибку в реализации. Хотел спросить у гуру!

Код:

Check(UserInfo: Integer): Boolean;

if Check(UserInfo) then
// далее код выполнения


Check это функция, в которую передаётся число, далее происходят расчеты, результат True или False
При компиляции Debug работает как надо, в Release сразу в if выполняется код, как-будто результат функции всегда True
Ответ: Хотелось бы глянуть, как на самом деле выглядит функция. Ведь существование приведённого кода - бред жэж.
Код:


Check(UserInfo: Integer): Boolean;
var
  n : Integer;
begin
  n := 5;
  if UserInfo = 5 then
    Result := True;
end;

Вопрос: вопрос по коду(winapi c++)

помогите, пожалуйста, в задаче часы должны сменяться, когда нажимаешь на соответствующую кнопку, но стрелочные часы не только не сменяют электронные, они не появляются даже если кнопки и электронные часы не включать в код
 

Код:
 
#include "stdafx.h"
#include "chasy.h"
#include <time.h>
#include <windows.h>
#include <windowsx.h>
#include <cmath>
#include <iostream>
 
using namespace std;
 
#define ID_BUTTON1 100
#define ID_BUTTON2 200
 
 
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
void STRELKA (COLORREF, int, int, float);
 
int nFunsterStil;
int iwinX = 400, iwinY = 40, iwinXC = iwinX - 150, iwinYC = iwinY;
int iDia = 400, iHeight = iDia + 40, iWidth = iDia + 165, iRad = iDia / 2, sizFont = int (iDia / 6.7);
int iKorp = 8, iMetM = 3, iMetH = 5;  
int iRadMet = iRad - iKorp, iRadCFR = iRadMet - sizFont / 2 - iMetH;
int penwKorp = 2, penwCfrbl = 2, penwmM = 2, penwmH = 3;
COLORREF colKorp = RGB (0, 0, 0), colCfrbl = RGB (150, 150, 150), colStrMH = colKorp, colStrS = RGB (230, 230, 230), colmM = colKorp, colmH = colKorp, colCfr = colKorp;
HWND hwnd;  
HDC hdcMem0, hdcMem, hdc;
HBITMAP hBitmap, hOldBitmap;
BITMAP bm;
PAINTSTRUCT ps;
HBRUSH br;  
HPEN pen;  
HFONT hFontO, hOldFont;
MSG mMsg;
LPCTSTR szClassName = L"WindowsApp";
 
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
    LPCTSTR szClassName = L"MainWindow";
    LPCTSTR szTitle = L"CLOCK";
    MSG msg;
    WNDCLASS wc;
    static HWND hbutton,hbutton2;
 
    ZeroMemory (&wc, sizeof (wc));
    wc.lpszClassName = szClassName;
    wc.hInstance = hInst;
    wc.lpfnWndProc = WndProc ;
    wc.hCursor = LoadCursor (NULL, IDC_ARROW) ;
    wc.hIcon = LoadIcon (hInst, L"icon") ;
    wc.hbrBackground = GetStockBrush (GRAY_BRUSH);
   
    RegisterClass (&wc);
    hwnd = CreateWindow (szClassName, szTitle, WS_OVERLAPPEDWINDOW, iwinX, iwinY, iWidth, iHeight, HWND_DESKTOP, NULL, hInst, NULL);
    hbutton = CreateWindow(L"button",L"Цифровые часы",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,iDia,50,150,30,hwnd,(HMENU)ID_BUTTON1,hInst,0);
    hbutton2 = CreateWindow(L"button",L"Электронные часы",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,iDia,150,150,30,hwnd,(HMENU)ID_BUTTON2,hInst,0);
    ShowWindow (hwnd, SW_SHOWNORMAL);
    while (GetMessage (&msg, NULL, 0, 0))
        DispatchMessage (&msg);
   
    DeleteObject (hwnd);
   
    return 0;
 }
 
LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static int i;
    switch (msg)
    {
        case(WM_CREATE):
        {
            SetWindowPos (hwnd, NULL, iwinX, iwinY, iWidth, iHeight, SWP_NOSIZE);    
            hdc = GetDC (hwnd);
            hdcMem = CreateCompatibleDC (hdc);
            hdcMem0 = CreateCompatibleDC (hdc);
            hBitmap = CreateCompatibleBitmap (hdc, iDia, iDia);
            GetObject (hBitmap, sizeof (BITMAP), &bm);
            hOldBitmap = SelectBitmap (hdcMem0, hBitmap);
    //CYFERBL (hwnd);
        }
        case(WM_TIMER):
        {
            InvalidateRect (hwnd, NULL, FALSE);
        }
        case(WM_COMMAND):
        {
            switch(LOWORD(wParam))
            {
            case ID_BUTTON1:
                {
                HDC hdc = GetDC(hwnd);
                i = 1;
                SendMessage(hwnd,WM_PAINT,wParam,lParam);
                ReleaseDC(hwnd,hdc);
                return 0;
                }
            case ID_BUTTON2:
                {
                HDC hdc = GetDC(hwnd);
                i = 2;
                SendMessage(hwnd,WM_PAINT,wParam,lParam);
                ReleaseDC(hwnd,hdc);
                return 0;
                }
            }
        }
        case(WM_PAINT):
        {
            RECT rect;
            BeginPaint (hwnd, &ps);
            int ii, jj, iX, iY, iXc, iYc, t = 0;  
            double fUgol, fUgolc;  
                        
            static int iLength;
            char cBuffer [80];
            
            SYSTEMTIME chas;
            GetLocalTime (&chas);
            if(i==1)
            {
                br = CreateSolidBrush (RGB (100, 100, 100));    //фон
                SelectObject (hdcMem0, br);
                Rectangle (hdcMem0, 0, 0, iDia, iDia);
                DeleteObject (br);
                hdcMem = BeginPaint (hwnd, &ps);
                if(BitBlt) DeleteObject (BitBlt);
                BitBlt (hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem0, 0, 0, SRCCOPY);
                float strUgolS, strUgolM, strUgolH;
                SetTimer (hwnd, 1, 1000, NULL);    
                pen = CreatePen (PS_SOLID, 1, colKorp);    //обод часов
                SelectObject (hdcMem0, pen);
                br = CreateSolidBrush (colKorp);
                SelectObject (hdcMem0, br);    
                Ellipse (hdcMem0, 0, 0, iDia, iDia);
                DeleteObject (br);
                DeleteObject (pen);
                br = CreateSolidBrush (colCfrbl);    //циферблат
                SelectObject (hdcMem0, br);    
                Ellipse (hdcMem0, iKorp, iKorp, iDia - iKorp, iDia - iKorp);
                DeleteObject (br);  
                pen = CreatePen (PS_SOLID, penwmM, colmM);
                SelectObject (hdcMem0, pen);
                for (ii = 1; ii <= 60; ii ++)    //разделение на секунды
                {                          
                    fUgol = - 0.017453292 * 6 * ii;
                    iX = iRad - int(iRadMet * sin (fUgol));
                    iY = iRad - int(iRadMet * cos (fUgol));
                    MoveToEx (hdcMem0, iX, iY, NULL);
                    iX = iRad - int((iRadMet - iMetM) * sin (fUgol));
                    iY = iRad - int((iRadMet - iMetM) * cos (fUgol));
                    LineTo (hdcMem0, iX, iY);
                }
                DeleteObject (pen);
                pen = CreatePen (PS_SOLID, penwmH, colmH);
                SelectObject (hdcMem0, pen);
                for (ii = 1; ii <= 12; ii ++)    //разбиение на часы
                {                          
                    fUgol =  - 0.017453292 * 30 * ii;
                    iX = iRad - int(iRadMet * sin (fUgol));
                    iY = iRad - int(iRadMet * cos (fUgol));
                    MoveToEx (hdcMem0, iX, iY, NULL);
                    iX = iRad - int((iRadMet - iMetH) * sin (fUgol));
                    iY = iRad - int((iRadMet - iMetH) * cos (fUgol));
                    LineTo (hdcMem0, iX, iY);
                }
                DeleteObject(pen);
                static LOGFONT lf;
                lf.lfPitchAndFamily = FIXED_PITCH | FF_MODERN;
                lf.lfItalic = FALSE;
                lf.lfWeight = FW_BOLD;
                lf.lfHeight = sizFont;
                lf.lfCharSet = DEFAULT_CHARSET;
                lstrcpy ((LPWSTR)&lf.lfFaceName, L"Impact");
                hFontO = CreateFontIndirect (&lf);
                hOldFont = (HFONT) SelectObject (hdcMem0, hFontO);
                SetBkMode (hdcMem0, TRANSPARENT);
                SetTextColor (hdcMem0, colCfr);
                char ttt1 [80];    
                for (jj = 1; jj <= 12; jj ++)    //цифры
                {
                    fUgolc = -0.017453292 * 30 * jj;
                    iXc = iRad - int(iRadCFR * sin (fUgolc)) - sizFont / 4;
                    iYc = iRad - int(iRadCFR * cos (fUgolc)) - sizFont / 2;
                    wsprintf ((LPWSTR) ttt1, L"%d", jj);
                    TextOut (hdcMem0, iXc, iYc, (LPCWSTR) ttt1, 2 * strlen (ttt1));
                }
    
                strUgolS = -0.017453292 * 6 * chas.wSecond;
                strUgolM = -0.017453292 * 6 * chas.wMinute + strUgolS / 60;
                strUgolH = -0.017453292 * 30 * chas.wHour + strUgolM / 12;
                STRELKA (colStrMH, 0.6*iRadMet - 4 * iMetH - iMetM, 2, strUgolH);    //часовая
                STRELKA (colStrMH, 0.8*iRadMet - iMetH - iMetM, 2, strUgolM);        //минутная
                STRELKA (colStrS, iRadMet - iMetH - iMetM, 1, strUgolS);        //секундная
                pen = CreatePen (PS_SOLID, 1, colStrMH);
                br = CreateSolidBrush (colStrMH);
                SelectBrush (hdcMem, br);    
                Ellipse (hdcMem, iRad - 3, iRad - 3, iRad + 3, iRad + 3);  
                DeleteObject (br);
                DeleteObject (pen);
            }
            if(i==2)
            {
                br = CreateSolidBrush (RGB (100, 100, 100));    //фон
                SelectObject (hdcMem0, br);
                Rectangle (hdcMem0, 0, 0, iDia, iDia);
                DeleteObject (br);
                hdcMem = BeginPaint (hwnd, &ps);
                BitBlt (hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem0, 0, 0, SRCCOPY);
                SetTimer (hwnd, 1, 1000, NULL);
                wsprintf ((LPWSTR)cBuffer + iLength, L"%d:%d:%d", chas.wHour, chas.wMinute, chas.wSecond);
                GetClientRect (hwnd, &rect);
                rect.top = 200;
                rect.left = 200;
                TextOut(hdc,rect.left,rect.top,(LPCWSTR) cBuffer,8*strlen(cBuffer));
            }
            EndPaint (hwnd, &ps);
            return 0;
        }
        case(WM_DESTROY):
        {
            KillTimer (hwnd, 1);    
            DeleteBitmap (hBitmap);
            SelectBitmap (hdcMem, hOldBitmap);
            DeleteDC (hdcMem);
            DeleteDC (hdcMem0);
            PostQuitMessage (0);
        }
        default:
            return (DefWindowProc (hwnd, msg, wParam, lParam));
    }
}
 
 
void STRELKA (COLORREF colStr, int radSTR, int shirSTR, float strUgol)
{
    int okrR = 3 * shirSTR;    
    int penwSTR = 2;    
    int strX1 = iRad + int(0.3 * radSTR * sin (strUgol) - shirSTR * cos (strUgol));
    int strY1 = iRad + int(0.3 * radSTR * cos (strUgol) + shirSTR * sin (strUgol));
    int strX2 = iRad + int(0.3 * radSTR * sin (strUgol) + shirSTR * cos (strUgol));
    int strY2 = iRad + int(0.3 * radSTR * cos (strUgol) - shirSTR * sin (strUgol));
    int strX = iRad - int(radSTR * sin (strUgol));
    int strY = iRad - int(radSTR * cos (strUgol));
    POINT pt [3] = {{strX1, strY1}, {strX2, strY2}, {strX, strY}};
    pen = CreatePen (PS_SOLID, penwSTR, colStr);
    SelectObject (hdcMem, pen);
    br = CreateSolidBrush (colStr);
    SelectObject (hdcMem, br);  
    Polygon (hdcMem, pt, 3);
    Ellipse (hdcMem, iRad - okrR, iRad - okrR, iRad + okrR, iRad + okrR);
    DeleteObject (br);
    DeleteObject (pen);
}
 
Ответ: Tatiana_Suszkiewicz
 
вопросы конкретно по WinAPI сюда:

 
а если посчитать твои "часы" задачей, то лучше сюда:

 
быстрее ответят...
Вопрос: вопрос насчет htaccess

Здравствуйте, не могу понять как это сделать и почему не работает.
имеется в .htaccess:
Код:
RewriteRule ^$  /lat/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.phpHTTP/
RewriteRule ^index\.phphttp://lalala.com/lat/ [R=301,L]
RewriteRule ^ru/$ /ru.php [QSA]
RewriteRule ^lat/$ /lat.php [QSA


А так же есть на сайте слайдер, если зайти по урлу к нему то он работает.
А если зайти по урлу /ru/?g=lala&id=1 то не работает. Наверно гет параметры не отдает /ru/ и /lat/?
Как правельнее сделать это?

PHP, JavaScript, SQL и другой код пишите внутри тегов [code=php]Тут код[/code]
Ответ: пример чего? я ж не знаю зачем там такая комплексная переменная и на что её менять.
Вопрос: Вопрос насчет выбора языка.

Вот назрел такой вопрос, что лучше:
знать сразу два языка(C и C++)
или лишь один(пожалуйста, уточните конкретно какой)?
Может сначала один изучить, затем другой?
На сайтах писано по разному, то учить по очереди, то вообще их не изучать...
Ответ:
Цитата:
Сообщение от p51x
Может просто компилятор обновили?
Уже не помню. Это было 14 лет назад.
Вопрос: вопрос по коду

Несколько вопросов, заранее спасибо.
Зачем в этом коде цикл? и почему именно такой интервал?
Что делает flush() если есть close() ?

File file = new File("fileWrite2.txt");
FileWriter fw = new FileWriter(file);
for(int i=0;i<10;i++){
fw.write("Soham is Just Awesome : "+i);
fw.flush();
}
fw.close();
Ответ: user_u,

Вопрос: Автономная работа кода

Здравствуйте!!!
Ребята, подскажите по такому вопросу!!! Есть код

Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <vcl.h>
#include <wininet.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma comment ( lib, "lib\wininet.lib" )
#pragma resource "*.dfm"
 
TForm1 *Form1;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  bool state;
  DWORD flags;
  state = InternetGetConnectedState (&flags,0);
  if ( state ) ShowMessage ("Сетевой кабель подключён");
  else ShowMessage ("Сетевой кабель отключен");
}
Этот код при нажатии на кнопку определяет подключён ли сетевой кабель или нет. Так вот можно ли этот код заставить работать автономно? Т.е чтобы он постоянно отслеживал это действие и по одному разу выводил сообщение?

Заранее благодарен за ответ
Ответ:
Сообщение от Rius
но ТС утверждает, что и это не работает.
этот код работает, но нет как мне нужно. Мне нужно, чтобы ShowMessage выводился один раз, а не 8 и более раз

Добавлено через 17 минут
Сообщение от Rius
nick42, Вы правы, попутал.
Тотже глюк с кодом
Вопрос: Компиляция с++ кода на с#

Здравствуйте, такой вопрос: Есть код на с++, который пишется в текстбоксе. Мне нужно его скомпилировать, как это сделать? Может есть специальные библиотеки?
Ответ:
Сообщение от Kerry_Jr
А теперь расскажи-ка подробно, как ты будешь компилировать исходный код, записанный в текстбоксе, из своей программы.
Точно так же как Visual Studio компилирует код в программы.
Вопрос: C#: Реально такой трюк провернуть? (вопрос простой, код внутри)

Имеется два класса: DataTable и DataTableExt:
    public class DataTableExt: DataTable
    {
        string addfield;
        //--------------------------------------------------------------
        //Обязательно все 4 конструктора переписывать, чтобы они были в DataTableExt?
        //Или есть "волшебный" способ обозначить, что у DataTableExt все те же конструкторы, что и у DataTable?
        public DataTableExt()
            : base()
        {
        }
        public DataTableExt(string tableName)
            : base(tableName)
        {
        }
        public DataTableExt(string tableName, string tableNameSpace)
            : base(tableName, tableNameSpace)
        {
        }
        public DataTableExt(System.Runtime.Serialization.SerializationInfo info
            , System.Runtime.Serialization.StreamingContext context)
            : base(info, context)
        {
        }
        //--------------------------------------------------------------
        //вопрос по пятому конструктору:
        //как бы так сделать, чтобы что-то подобное работало:
        public DataTableExt(DataTable dataTable, string AdditionalField)
            : base()
        {
            this = dataTable; //т.е. создаваемый объект DataTableExt должен быть, по сути, 
                              //копией ранее созданного объекта DataTable
            this.addfield = AdditionalField;
        }
        //или в этом конструкторе придётся вручную создавать все столбцы, являющиеся копиями таблицы dataTable и переносить данные в цикле? (вроде, бред какой-то...)
    }
Ответ:
TheBatya
ЕвгенийВ,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{



    class A
    {
        public A()
        {
            System.Console.WriteLine("is A");
        }
    }

    class B : A
    {
    }


    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            System.Console.ReadLine();
        }
    }
}


Console:
is A

Это доказывает только то, что совсем не рубите матчасть, а хотите получать 250. Кошмар! Срамота!
  • если не прописано явно конструкторов, то компилятор генерит публичный конструктор без параметров по умолчанию
  • если явно не указан вызов конструктора базового класса, то компилятор генерит вызов конструктора по умолчанию базового класса, для всех таки конструкторов наследника

    Попробуй в А сделать конструктор приватным и получишь малатком по башке пальцам от компилятора
  • Вопрос: Исправить ошибки в коде подсветки синтаксиса RichEdit

    Вынесено в отдельную тему отсюда:

    Ребят помогите разобраться, нашел то что нужно да вот не пашет, выдает ошибки, что может быть
    ошибки
    [bcc32 Error] QxMatPadCpp.cpp(276): E2141 Declaration syntax error
    [bcc32 Error] QxMatPadCpp.cpp(293): E2238 Multiple declaration for 'ST'
    [bcc32 Error] QxMatPadCpp.cpp(293): E2344 Earlier declaration of 'ST'
    [bcc32 Error] QxMatPadCpp.cpp(293): E2141 Declaration syntax error
    [bcc32 Error] QxMatPadCpp.cpp(294): E2238 Multiple declaration for 'FS'
    [bcc32 Error] QxMatPadCpp.cpp(294): E2344 Earlier declaration of 'FS'
    [bcc32 Error] QxMatPadCpp.cpp(294): E2141 Declaration syntax error
    [bcc32 Error] QxMatPadCpp.cpp(298): E2040 Declaration terminated incorrectly
    вот код

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    const char * ARRAY[] = 
    { 
            "asm",        "do",           "if",               "return",      "typedef", 
            "auto",       "double",       "inline",           "short",       "typeid", 
            "bool",       "dynamic_cast", "int",              "signed",      "typename", 
            "break",      "else",         "long",             "sizeof",      "union", 
            "case",       "enum",         "mutable",          "static",      "unsigned", 
            "catch",      "explicit",     "namespace",        "static_cast", "using", 
            "char",       "export",       "new",              "struct",      "virtual", 
            "class",      "extern",       "operator",         "switch",      "void", 
            "const",      "false",        "private",          "template",    "volatile", 
            "const_cast", "float",        "protected",        "this",        "wchar_t", 
            "continue",   "for",          "public",           "throw",       "while", 
            "default",    "friend",       "register",         "true", 
            "delete",     "goto",         "reinterpret_cast", "try", 
    }; 
     
    TSearchTypes ST; ST << stMatchCase; 
    TFontStyles  FS; FS << fsBold; 
     
    int i = 0; 
     
    while (i < sizeof(ARRAY) / sizeof(ARRAY[0])) 
    { 
            AnsiString FIND = ARRAY[i]; 
     
            for (int i = 0; i < RichEdit->Lines->Count; i++) 
            { 
                    int START  = RichEdit->SelStart + RichEdit->SelLength; 
                    int LENGHT = RichEdit->Text.Length() - START; 
                    int FOUND  = RichEdit->FindText(FIND, START, LENGHT, ST); 
     
                    if (FOUND != -1) 
                    { 
                            RichEdit->SelStart  = FOUND; 
                            RichEdit->SelLength = FIND.Length(); 
                            RichEdit->SelAttributes->Color = clBlack; 
                            RichEdit->SelAttributes->Style = FS; 
                    } 
            } 
     
            i++; 
     
            RichEdit->SelStart = 0; 
    }
    Ответ: Не понимаю ну что ни так Вы уж извините но я опять с вопросом, вот код он компилируется, но при нажатии на любую клавишу выдает \colortbl ;\\red255\\green0\\blue0;\\red0\\green255\\blue0;} Я новичок и только учусь, помогите пожалуйста укажите ошибки
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    
    TMainForm *MainForm;
    #include "vector"
    #include "map"
    #include "string"
    typedef AnsiString Ansi;
    typedef std::string Strs;
    struct Style{
    Ansi opentags,
         closetags;
    Style(bool,bool,bool,bool,int,int);
    //булевы флаги управляют стилями
    //F и H 1, 2, ... – индексы цвета в таблице
    };
     
    Style::Style(bool B,bool I,bool U,bool S,int F,int H){
    if(B) { opentags += "\\b "; closetags.Insert("\\b0 ",1);}
    if(I) { opentags += "\\i "; closetags.Insert("\\i0 ",1);}
    if(U) { opentags += "\\ul "; closetags.Insert("\\ul0 ",1);}
    if(S) { opentags += "\\strike ";
           closetags.Insert("\\strike0 ",1);}
    if(F > 0){ opentags += ("\\cf" + Ansi(F) + " ");
               closetags.Insert("\\cf0 ",1);}
    if(H > 0){ opentags += ("\\highlight" + Ansi(H) + " ");
               closetags.Insert("\\highlight0 ",1);}
    }
    //---------------------------------------------------------------------------
    struct Words{
    int    size;
    Ansi   word;
    Style *style;
    Words(Ansi w,Style *s){word = w;style = s;size = w.Length();}
    };
    typedef std::vector <Words> Library;
    Library *Alexandria;
    //---------------------------------------------------------------------------
     
    typedef std::map <int,Words*> Hash;//
    class HighLighter{
    private:
    Hash               find;
    Hash::iterator     ash;
    Library           *Lib;
    Library::iterator  pos;
    Ansi               ColorTable;
    void     Scan(TRichEdit *);//÷òîáû Г§Г*ïîëГ*ГЁГІГј find
    void     FindKMP(char *txt,Library::iterator p);
    void     ScanKMP(TRichEdit *);
    public:
             HighLighter(Ansi C, Library* L){ColorTable = C;Lib = L;}
    void     HighLight(TRichEdit*);
    };
     
    void HighLighter::FindKMP(char *txt,Library::iterator p){
    char *sub = p->word.c_str();
    int X = p->word.Length(), *pf = new int [X], T = strlen(txt);
    pf[0] = 0;
    for (int k = 0, i = 1; i<X; ++i){
      while(k>0 && sub[i] != sub[k]) k = pf[k-1];
      if (sub[i] == sub[k]) k++;
      pf[i] = k;
                                    }
    for (int k = 0, i = 0; i<T; ++i){
      while ((k>0) && (sub[k] != txt[i])) k = pf[k-1];
      if (sub[k] == txt[i]) k++;
      if (k==X) find [i-X+2] == pf;
                                    }
     delete [] pf;
    }
    /*
    void HighLighter::ScanKMP(TRichEdit *r){
      char *c = strdup(r->Text.c_str());
      find.clear();
      for(pos = Lib->begin();pos != Lib->end();++pos) FindTextA(c,pos);
      free(c);
    }
    */
    void HighLighter::Scan(TRichEdit *r){
    int len = r->Text.Length();
    find.clear(); TSearchTypes sOpts;
    sOpts = TSearchTypes() << stMatchCase << stWholeWord;
    for(pos = Lib->begin();pos != Lib->end();++pos){
      int start = 0, end = len, is;
      while (0 <= (is = r->FindText (pos->word,start,end,sOpts))){
        find[is+1] ->word; // 
        start += pos->size; end = len - start;
                                                                 }
                                                   }
    }
     
    void HighLighter::HighLight(TRichEdit *r)
    {
    Scan(r); Ansi s = r->Text;
    Ansi result = "{\\rtf1 "; result += ColorTable;
    ash = find.begin();//
    for(int i = 1;i <= s.Length();i++)
    {
     if(!ash->first || i < ash->first)
     {if(s[i] == '\n')result += "\\par "; else result += s[i]; }
     else
     if(i == ash->first){
      result += ash->second->style->opentags;
      if(s[i] == '\n')result += "\\par "; else result += s[i];
     } else
     if((i >  ash->first) && (i < (ash->first + ash->second->size))){
      result += s[i];
     }else
     if(i == (ash->first + ash->second->size)){
      result += ash->second->style->closetags;
      if(s[i] == '\n')result += "\\par "; else result += s[i];
      ++ash;
     }
    }
    result += "\\par }";
    //----------------------------------------------------------------------------------------------------------------------------
                    r->DoubleBuffered = 1;
                    int eventMask = (int)::SendMessage(r->Handle,EM_SETEVENTMASK,0,0);
                    ::SendMessage(r->Handle,WM_SETREDRAW,false,0);
                    CHARRANGE chrgSave;
                    ::SendMessage(r->Handle,EM_EXGETSEL,0,(LPARAM)&chrgSave);
                    int en = SendMessage(r->Handle,EM_GETFIRSTVISIBLELINE,0,0);
    r->Text = result;//ìåГ*ГїГҐГ¬ ГІГҐГЄГ±ГІ Гў RichEdit
                    ::SendMessage(r->Handle,EM_EXSETSEL,0,(LPARAM)&chrgSave);
                    int st = SendMessage(r->Handle,EM_GETFIRSTVISIBLELINE,0,0);
                    if (st != en) SendMessage(r->Handle,EM_LINESCROLL,0,en-st);
                    ::SendMessage(r->Handle, WM_SETREDRAW,true,0);
                    ::InvalidateRect(r->Handle,0,true);
                    ::SendMessage(r->Handle,EM_SETEVENTMASK,0,eventMask);
                    r->DoubleBuffered = 0;
                    r->Repaint();
    }
    //---------------------------------------------------------------------------
    HighLighter *hlter;
    //---------------------------------------------------------------------------
    __fastcall TMainForm::TMainForm(TComponent* Owner)
            : TForm(Owner)
    {
    Alexandria = new Library;                //    B I U S F H
    Alexandria->push_back(Words("Стиль1",new Style(1,0,0,0,0,0)));
    Alexandria->push_back(Words("Стиль2",new Style(0,1,0,0,0,0)));
    Alexandria->push_back(Words("Стиль3",new Style(0,0,1,0,0,0)));
    Alexandria->push_back(Words("Стиль4",new Style(0,0,0,1,0,0)));
    Alexandria->push_back(Words("Стиль5",new Style(0,0,0,0,2,0)));
    Alexandria->push_back(Words("Стиль6",new Style(0,0,0,0,0,1)));
    Ansi colors = "{\\colortbl ;\\red255\\green0\\blue0;\\red0\\green255\\blue0;}";
    hlter = new HighLighter(colors,Alexandria);
    }
     
     
    void __fastcall TMainForm::RichEdit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
     
    {
    hlter->HighLight(RichEdit1);
    }
    Добавлено через 52 секунды
    volvo спасибо с тем вопросом разобрался

    Добавлено через 12 часов 1 минуту
    Кто нибудь поможет?

    Добавлено через 3 часа 15 минут
    Выдает ошибки, помогите разобраться
    [bcc32 Error] E2316 'FindTextA' is not a member of 'TRichEdit'
    Full parser context
    : parsing: void HighLighter::Scan(TRichEdit *)
    [bcc32 Error] E2034 Cannot convert 'std::_Vector_iterator<Words,std::allocator<Words> >' to 'Words *'
    Full parser context
    parsing: void HighLighter::Scan(TRichEdit *)
    : W8004 'end' is assigned a value that is never used
    Full parser context
    parsing: void HighLighter::Scan(TRichEdit *)

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    
    #include <vector>
    #include <map>
    #include <string>
    typedef AnsiString Ansi;
    typedef std::string Strs;
    struct Style{
    Ansi opentags,
         closetags;
    Style(bool,bool,bool,bool,int,int);
    //булевы флаги управляют стилями
    //F и H 1, 2, ... – индексы цвета в таблице
    };
     
    Style::Style(bool B,bool I,bool U,bool S,int F,int H){
    if(B) { opentags += "\\b "; closetags.Insert("\\b0 ",1);}
    if(I) { opentags += "\\i "; closetags.Insert("\\i0 ",1);}
    if(U) { opentags += "\\ul "; closetags.Insert("\\ul0 ",1);}
    if(S) { opentags += "\\strike ";
           closetags.Insert("\\strike0 ",1);}
    if(F > 0){ opentags += ("\\cf" + Ansi(F) + " ");
               closetags.Insert("\\cf0 ",1);}
    if(H > 0){ opentags += ("\\highlight" + Ansi(H) + " ");
               closetags.Insert("\\highlight0 ",1);}
    }
    //---------------------------------------------------------------------------
    struct Words{
    int    size;
    Ansi   word;
    Style *style;
    Words(Ansi w,Style *s){word = w;style = s;size = w.Length();}
    };
    typedef std::vector <Words> Library;
    Library *Alexandria;
    //---------------------------------------------------------------------------
     
    typedef std::map <int,Words*> Hash;// ключ == позиция вхождения
    class HighLighter{
    private:
    Hash               find;
    Hash::iterator     ash;
    Library           *Lib;
    Library::iterator  pos;
    Ansi               ColorTable;
    void     Scan(TRichEdit *);// что бы заполнить find
    void     FindKMP(char *txt,Library::iterator p);
    void     ScanKMP(TRichEdit *);
    public:
             HighLighter(Ansi C, Library* L){ColorTable = C;Lib = L;}
    void     HighLight(TRichEdit*);
    };
     
    void HighLighter::FindKMP(char *txt,Library::iterator p){
    char *sub = p->word.c_str();
    int X = p->word.Length(), *pf = new int [X], T = strlen(txt);
    pf[0] = 0;
    for (int k = 0, i = 1; i<X; ++i){
      while(k>0 && sub[i] != sub[k]) k = pf[k-1];
      if (sub[i] == sub[k]) k++;
      pf[i] = k;
                                    }
    for (int k = 0, i = 0; i<T; ++i){
      while ((k>0) && (sub[k] != txt[i])) k = pf[k-1];
      if (sub[k] == txt[i]) k++;
      if (k==X) find [i-X+2] = p;
                                    }
     delete [] pf;
    }
    /*
    void HighLighter::ScanKMP(TRichEdit *r){
      char *c = strdup(r->Text.c_str());
      find.clear();
      for(pos = Lib->begin();pos != Lib->end();++pos) FindTextA(c,pos);
      free(c);
    } */
     
    void HighLighter::Scan(TRichEdit *r){
    int len = r->Text.Length();
    find.clear(); TSearchTypes sOpts;
    sOpts = TSearchTypes() << stMatchCase << stWholeWord;
    for(pos = Lib->begin();pos != Lib->end();++pos){
      int start = 0, end = len, is;
      while (0 <= (is = r->FindTextA(pos->word,start,end,sOpts))){
        find[is+1] = pos ; // пересчитываем переменные поиска
        start += pos->size; end = len - start;
                                                                 }
                                                   }
    }
     
    void HighLighter::HighLight(TRichEdit *r)
    {
    Scan(r); Ansi s = r->Text;
    Ansi result = "{\\rtf1 "; result += ColorTable;
    ash = find.begin();//
    for(int i = 1;i <= s.Length();i++)
    {
     if(!ash->first || i < ash->first)
     {if(s[i] == '\n')result += "\\par "; else result += s[i]; }
     else
     if(i == ash->first){
      result += ash->second->style->opentags;
      if(s[i] == '\n')result += "\\par "; else result += s[i];
     } else
     if((i >  ash->first) && (i < (ash->first + ash->second->size))){
      result += s[i];
     }else
     if(i == (ash->first + ash->second->size)){
      result += ash->second->style->closetags;
      if(s[i] == '\n')result += "\\par "; else result += s[i];
      ++ash;
     }
    }
    result += "\\par }";
    // эти блоки предназначены для устранения
    //мерцания экрана
                    r->DoubleBuffered = 1;
                    int eventMask = (int)::SendMessage(r->Handle,EM_SETEVENTMASK,0,0);
                    ::SendMessage(r->Handle,WM_SETREDRAW,false,0);
                    CHARRANGE chrgSave;
                    ::SendMessage(r->Handle,EM_EXGETSEL,0,(LPARAM)&chrgSave);
                    int en = SendMessage(r->Handle,EM_GETFIRSTVISIBLELINE,0,0);
    r->Text = result;//меняем текст в RichEdit
                    ::SendMessage(r->Handle,EM_EXSETSEL,0,(LPARAM)&chrgSave);
                    int st = SendMessage(r->Handle,EM_GETFIRSTVISIBLELINE,0,0);
                    if (st != en) SendMessage(r->Handle,EM_LINESCROLL,0,en-st);
                    ::SendMessage(r->Handle, WM_SETREDRAW,true,0);
                    ::InvalidateRect(r->Handle,0,true);
                    ::SendMessage(r->Handle,EM_SETEVENTMASK,0,eventMask);
                    r->DoubleBuffered = 0;
                    r->Repaint();
    }
    //---------------------------------------------------------------------------
    HighLighter *hlter;
    //---------------------------------------------------------------------------
    __fastcall TMainForm::TMainForm(TComponent* Owner)
            : TForm(Owner)
    {
    Alexandria = new Library;                //    B I U S F H
    Alexandria->push_back(Words("Стиль1",new Style(1,0,0,0,0,0)));
    Alexandria->push_back(Words("Стиль2",new Style(0,1,0,0,0,0)));
    Alexandria->push_back(Words("Стиль3",new Style(0,0,1,0,0,0)));
    Alexandria->push_back(Words("Стиль4",new Style(0,0,0,1,0,0)));
    Alexandria->push_back(Words("Стиль5",new Style(0,0,0,0,2,0)));
    Alexandria->push_back(Words("Стиль6",new Style(0,0,0,0,0,1)));
    Ansi colors = "{\\colortbl ;\\red255\\green0\\blue0;\\red0\\green255\\blue0;}";
    hlter = new HighLighter(colors,Alexandria);
    }
    /*
    RichEdit1->Text = "{\\rtf \
    {\\colorbl ;\\red255\\green0\\blue0;\\red0\\green255\\blue0;}\
    \\highlight2 Green\\highlight0 \\par \\cf1 Red\\cf0 \\par}";
    */
     
    void __fastcall TMainForm::RichEdit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
     
    {
    hlter->HighLight(RichEdit1);
    }
    Вопрос: HTML код в PHP файле

    Добрый день, имеется PHP файл, не отображаются кавычки в нем (выдает ошибку).
    Когда-то нашел код, что-то вроде того {код} а тут вставлял уже HTML код с кавычками и тогда все работало {/код}
    Подскажите пожалуйста что должно быть в этих фигурных скобках. Спасибо!
    Ответ: Из темы и самого вопроса: HTML код в PHP файле - не отображаются кавычки в нем (выдает ошибку).

    Для примера

    <?php

    echo "<html><body>
    <a href=
    \"/support\">Помощь</a>
    <a href='/support'>Помощь</a>"
    ;

    ?>

    <a
    href="/support">Помощь</a>

    <?php


    echo "</body></html>";

    ?>