EOutOfResource RichEdit, которые меняют мою политику?

Я работаю на многопоточном сервере с формой VCL, используемой для обслуживания системы. Каждый поток может писать в RichEdit MainForm, чтобы показать, что он делает в режиме реального времени (если возникает проблема, мы должны исправить это быстро).

Но когда поток пишет в RichEdit, я время от времени получаю сообщение об ошибке "EOutOfResource": "Erreur d'insertion de ligne RichEdit" (перевод Google: строка вставки ошибки RichEdit). Содержимое RichEdit становится беспорядком.

Это основная форма процедуры, которая добавляет добавить строку в RichEdit:

procedure Main.MajRichEdit(S1,S2:string;tform:TFontStyles;i1:integer)
begin
    CriticalSection.Acquire
    if S2='C' then
    begin
        RichEditC.SelAttributes.Style:=tform;
        RichEditC.SelAttributes.Color:=i1;
        RichEditC.Lines.Add:=S1;
    end
    else if S2='CN' then
        RichEditC.Lines.Add:=S1;

    else if S2='T' then
    begin
        RichEditT.SelAttributes.Style:=tform;
        RichEditT.SelAttributes.Color:=i1;
        RichEditT.Lines.Add:=S1;
    end
    else if S2='TN' then
        RichEditT.Lines.Add:=S1;

    else if S2='S' then
    begin
        RichEditS.SelAttributes.Style:=tform;
        RichEditS.SelAttributes.Color:=i1;
        RichEditS.Lines.Add:=S1;
    end
    else if S2='SN' then
        RichEditS.Lines.Add:=S1;
    CriticalSection.Release;
end;

Это звонки из моих тем:

//..Declaration Variable..//
public
    sCall1,sCall2:string;
    tFontCall1:TFontStyles;
    iNbColor1:integer;
//..Appel MajRichEdit..//
procedure Mythread.CallREMajTelforIHM;
begin
    LockIHM.BeginWrite;
    Main.MajRichEdit(sCall1,sCall2,tFontCall1,iNbColor1);
    LockIHM.EndWrite;
end;
//..Appel CallRe ..//
//My code
    sCall1:="un petit peu de français , c'est pas plus mal ;) "
    sCall2:="C";
    tFontCall1:=[fsBold]; //If i want a txt in bold ;)
    iCall1:=clRed;
    Queue(CallREMajTelforIHM);

У меня есть подобные вещи, работающие нормально (просто EAccessViolation за одну маленькую вещь, но я исправлю это после;))

Исключение может быть обойдено попыткой / кроме? Я ничего не делаю в моей системе для изменения, поэтому я не понимаю, почему политика TRichEdit изменена...

0 ответов

Другие вопросы по тегам