Паралельные процессы

Тема в разделе "Delphi - Система", создана пользователем Onegin, 30 авг 2006.

Статус темы:
Закрыта.
  1. Onegin

    Onegin Гость

    Здравствуйте.
    У меня три вопроса:
    1. Я сделал подсветку тригонометрических функций обычным методом: процедуру подсветки поместил в OnChange rePole(TRichEdit), стало тормозить перерисовываясь. Попробовал использовать Паралельный процесс(LexPole), тормоза не прикратились. Вызов LexPole я делал также в OnChange.
    2. Я сохраняю настройки программы в файл, который находится в той же директории, что и исполняемый файл программы (Например 'c:\myprog\config.txt') . Да но пользователь может установить программу в другое место(Например: 'c:\programfiles\myprog' ) но у меня написано LoadFromFile('c:\myprog\config.txt'). Я исползовал InstallShield там упоминается свойство InstallDir, как из программи получить доступ к этому свойству.
    3. Я сначала запоминаю положение каретки, а после подсветки возвращаю ее обратно.Но,
    ** y:=fmCalc.rePole.Perform(EM_LINEFROMCHAR, fmCalc.rePole.SelStart, 0);
    x:=fmCalc.rePole.Perform(EM_LINEINDEX, Y, 0);**
    Возвращает X как позицию каретки от начала нулевой строки, а
    **fmCalc.rePole.Selstart := fmCalc.rePole.perform(em_lineindex, y, 0) + x;**
    Устанавливает в координатах Y-номер строки, X- количество символов от начала етой же строки. Можно как то решить эту проблему? Может возможно вообще без нее обойтись?



    Вот процедура подсветки:
    Код (Text):
    procedure TLexPole.Execute;
    Var
    x,y,i,j,h : integer;
    Funcs   : array [0..25] of string;
    begin
    Funcs[0]:='sin';
    Funcs[1]:='cos';
    Funcs[2]:='tg';
    Funcs[3]:='ctg';
    Funcs[4]:='sec';
    Funcs[5]:='cosec';
    Funcs[6]:='sinh';
    Funcs[7]:='cosh';
    Funcs[8]:='tgh';
    Funcs[9]:='ctgh';
    Funcs[10]:='sech';
    Funcs[11]:='cosech';
    Funcs[12]:='arcsin';
    Funcs[13]:='arccos';
    Funcs[14]:='arctg';
    Funcs[15]:='arcctg';
    Funcs[16]:='arcsec';
    Funcs[17]:='arccosec';
    Funcs[18]:='arcsinh';
    Funcs[19]:='arccosh';
    Funcs[20]:='arctgh';
    Funcs[21]:='arcctgh';
    Funcs[22]:='arcsech';
    Funcs[23]:='arccosech';
    Funcs[24]:='ln';
    Funcs[25]:='lg';
    x:=0;
    y:=0;
    y:=fmCalc.rePole.Perform(EM_LINEFROMCHAR, fmCalc.rePole.SelStart, 0);
    x:=fmCalc.rePole.Perform(EM_LINEINDEX, Y, 0);
    inc(y);
    x:=fmCalc.rePole.SelStart-X+1;
    for i:=fmCalc.rePole.Lines.Count-1 downto 0 do
    for j:=Length(fmCalc.rePole.Lines[i]) downto 1 do
    for h:=25 downto 0 do
    if Copy(fmCalc.rePole.Lines[i],j,Length(Funcs[h]))=Funcs[h] then
    begin
    fmCalc.rePole.Font.Color:=clBlack;
    fmCalc.rePole.SelStart:=j-1;
    fmCalc.rePole.SelLength:=Length(Funcs[h]);
    Color:=clBlue;
    Synchronize(UpPole);
    fmCalc.rePole.SelLength:=0;
    fmCalc.rePole.SelStart:=0;
    fmCalc.rePole.Selstart := fmCalc.rePole.perform(em_lineindex, y, 0) + x;
    end;
    end;

    Procedure TLexPole.UpPole;
    begin
    fmCalc.rePole.SelAttributes.Color:=Color;
    end;
    Заранее спасибо.
    P.S.
    Извините за столь громоздкий вопрос.
     
  2. Onegin

    Onegin Гость

    Извините, не процессы а ПОТОКИ.
     
  3. Onegin

    Onegin Гость

    С вопросом 2 я разобрался:использую реестр но два остальных до сих пор актуальны, помогите разобратся!
     
  4. TSnake

    TSnake Гость

    Насчёт 2ого: используй относительный путь: LoadFromFile('config.txt')
     
  5. Shurik Ilyin

    Shurik Ilyin Гость

    По вопросу 1.
    Прочитай про Synchronize.
     
Загрузка...
Похожие Темы - Паралельные процессы
  1. Mady
    Ответов:
    3
    Просмотров:
    1.474
  2. Rolana
    Ответов:
    0
    Просмотров:
    767
  3. Whatka
    Ответов:
    1
    Просмотров:
    1.108
  4. etaon
    Ответов:
    1
    Просмотров:
    2.234
  5. Mikle77
    Ответов:
    5
    Просмотров:
    3.912
Статус темы:
Закрыта.

Поделиться этой страницей