evil-programmers icon indicating copy to clipboard operation
evil-programmers copied to clipboard

DialogTools. Предлагаю убрать замену xODOA на x20, склеивающую строки.

Open z0hm opened this issue 8 years ago • 1 comments

Такое поведение вредно - оно необратимо и превращает скрипты в кашу. VictorVG предлагает diff edit.cpp.diff.zip

z0hm avatar May 17 '17 13:05 z0hm

Сформулирую задачу по результатам исследований. Случайно Алексей обнаружил что если в отредактировать через вызов DialogTools строку ввода диалога и вставить в неё переводы строк (Cr, либо CrLf, Lf) то индикация наличия текста за концом первой строки изменилась с символов ASCII:

1

на символы пробела:

2

Ошибочные гипотезы проверили, отмели.

Выяснилось что у Алексея патченный вариант dt.dll в которой отключён конвертор переводов строк в пробелы. Нашли и место в коде:

diff --git a/DialogTools/src/edit.cpp b/DialogTools/src/edit.cpp
index f974754..6f1f155 100644
--- a/DialogTools/src/edit.cpp
+++ b/DialogTools/src/edit.cpp
@@ -55,24 +55,6 @@ void DoEdit(HANDLE aDlg)
             {
               DWORD read;
               ReadFile(file,outBuffer,size*sizeof(TCHAR),&read,NULL);
-              outBuffer[size]=0;
-              for(size_t ii=0;ii<size;++ii)
-              {
-                if(outBuffer[ii]==13&&outBuffer[ii+1]==10)
-                {
-                  wmemcpy(outBuffer+ii,outBuffer+ii+1,size-ii);
-                  outBuffer[ii]=0x20;
-                  size--;
-                }
-                else if(outBuffer[ii]==13)
-                {
-                  outBuffer[ii]=0x20;
-                }
-                else if(outBuffer[ii]==10)
-                {
-                  outBuffer[ii]=0x20;
-                }
-              }
               Info.SendDlgMessage(aDlg,DM_SETTEXTPTR,itemID,outBuffer);
               HeapFree(GetProcessHeap(),0,outBuffer);
             }

правда я помню, что вроде этот конвертор был нужен для выполнения каких-то операций, и если так, то сделать для него свой вызов типа dt multy2singlestring, а в строках ввода диалогаов умолчанию не вызывать ибо там приводит искажению вводимых в плагинах типа RESearch мнострочных команд.

VictorVG avatar May 18 '17 00:05 VictorVG