Вверх ↑
Этот топик читают: Гость
Ответов: 413
Рейтинг: 57
#511: 2020-10-20 18:11:39 ЛС | профиль | цитата
Переустановил HiAsm и установил компилятора FPC 3.2.0 и KOL 3.23
Скругления в уголках компонентов ButtonRush стали с разрывом
Было:
2.jpg
Стало:
1.jpg

FPC-32 Windows XP
На цветной лучше видно (уголки бледные и с разрывом:
3.jpg

Редактировалось 3 раз(а), последний 2020-10-20 19:13:25
карма: 0

0
Ответов: 4621
Рейтинг: 746
#512: 2020-10-21 11:43:21 ЛС | профиль | цитата
Попробую разобраться.
карма: 26

0
Ответов: 15
Рейтинг: 0
#513: 2020-11-06 12:52:19 ЛС | профиль | цитата
Не знаю нужно ли создавать новую тему.
При компиляции FPC-64U возникают ошибки в компоненте "закачка по http":
hiHTTP_Get.pas(102,23) Error: Incompatible types: got "PWideChar" expected "PChar"
hiHTTP_Get.pas(161,107) Error: Incompatible type for arg no. 2: Got "PChar", expected "PWideChar"
hiHTTP_Get.pas(276) Fatal: There were 2 errors compiling module, stopping

От 2й ошибки можно избавиться если в исходнике в 161 строке поменять PAnsiChar на PWideChar.
С первой так не получается. Подскажите кто-нибудь куда копать а то Delphi не моя сильная сторона
Спасибо.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 4621
Рейтинг: 746
#514: 2020-11-06 13:51:41 ЛС | профиль | цитата
Строка 102 писал(а):
PI.lpszProxy := PAnsiChar(AnsiString(s));

Строка 161 писал(а):
HttpSendRequest(UrlHandle,PChar('Proxy-Authorization: Basic '+Base64_Code(s+':'+s1)+#13#10),DWORD(-1),nil,0);

карма: 26

0
Ответов: 15
Рейтинг: 0
#515: 2020-11-06 15:10:05 ЛС | профиль | цитата
Да! Ошибки исчезли.
Огромное спасибо за быстрый ответ.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 4621
Рейтинг: 746
#516: 2020-11-06 15:27:28 ЛС | профиль | цитата
Не могу гарантировать работоспособность HTTP_Get. Рекомендую использовать HTTPClient.
карма: 26

0
Ответов: 413
Рейтинг: 57
#517: 2020-11-09 20:36:49 ЛС | профиль | цитата
Netspirit,
Добрый день. Операции с файлами (например удаление) вызывают ошибку при компиляции FPC-32 и Delphi:
Ошибка 2.JPG
File Tools

Add(MainForm,2953706,21,105)
{
link(onCreate,13692969:doExecute,[])
}
Add(FileTools,11579891,154,182)
{
link(FileName,15285739:Text,[])
}
Add(Button,8333846,105,196)
{
Left=65
Top=110
Width=180
Caption="Удалить"
link(onClick,11579891:doDelete,[])
}
Add(ODialog,13692969,98,119)
{
link(onExecute,15285739:doText,[])
}
Add(Edit,15285739,154,119)
{
Left=35
Top=20
Width=205
}

Также ошибка при удалении строки в TreeViewTrain через TVT_DeleteNode
Ошибка.JPG

В стандартной сборке ошибки нет. Система - Windows XP.

Редактировалось 1 раз(а), последний 2020-11-09 20:51:41
карма: 0

0
Ответов: 4621
Рейтинг: 746
#518: 2020-11-11 12:23:16 ЛС | профиль | цитата
Для исправления ошибки в FileTools нужно поправить файл HiAsm\compiler\FPC2\src\packages\KOL\kol.pas
Строка 14575:
_SHFILEOPSTRUCTA = {$ifndef WIN64}packed{$endif} record
Строка 14585:
_SHFILEOPSTRUCTW = {$ifndef WIN64}packed{$endif} record

После чего выполнить файлы
HiAsm\compiler\FPC2\src\_make_KOL_A.bat
HiAsm\compiler\FPC2\src\_make_KOL_U.bat


Редактировалось 1 раз(а), последний 2020-11-11 12:23:38
карма: 26

1
Голосовали:Poputchik
Ответов: 207
Рейтинг: 14
#519: 2020-11-16 15:34:17 ЛС | профиль | цитата
Netspirit, Не подскажешь почему накапливается оперативная память при каждом цикле. (особенно это заметно в FPC32 и FPC32U).
Даже если не зацикливать, а нажимать "Выполнить", после каждого нажатия растет использование RAM.

Add(MainForm,7915591,105,182)
{
Width=457
Height=455
Caption="HTTPClient - Сохранение в файл"
Position=1
}
Add(Button,12479344,224,196)
{
Left=10
Top=120
Width=140
Height=25
Caption="Выполнить"
link(onClick,14299393:doWork2,[])
}
Add(Memo,2568247,952,217)
{
Left=10
Top=200
Width=425
Height=215
ScrollBars=3
}
Add(Message,363691,595,238)
{
Caption="Ошибка запроса"
Icon=1
}
Add(DoData,7347341,819,217)
{
link(onEventData,2568247:doAdd,[])
link(Data,2427935:getVar,[])
}
Add(Hub,5102370,308,196)
{
link(onEvent1,8936422:doWork,[])
link(onEvent2,11610816:doStart,[])
}
Add(LineBreakEx,8936422,343,196)
{
Caption="clear"
}
Add(LineBreakEx,2111794,882,224)
{
Caption="clear"
Type=1
link(OnEvent,2568247:doClear,[])
}
Add(LineBreakEx,2427935,819,189)
{
Caption="head"
Type=2
}
Add(LineBreakEx,15402714,539,266)
{
Caption="head"
Type=3
link(_Data,6023390:RawHeaders,[(545,257)(538,257)])
}
Add(Edit,4213360,518,105)
{
Left=10
Top=25
Width=425
Text="http://fs.kinomania.ru/file/film_poster/5/81/581b651aab2c22ccbb9c1bd3e0282103.jpeg"
}
Add(HTTPClient,6023390,518,217)
{
Point(RawHeaders)
Point(doResumeDL)
link(URL,4213360:Text,[])
link(FileName,12595752:Text,[])
link(onHeadersAvail,10070054:doSynchronize,[])
link(onDownloadProgress,13932024:doSynchronize,[(564,237)(564,370)])
link(onError,363691:doMessage,[])
}
Add(Label,10388595,105,231)
{
Left=10
Top=5
Width=156
Height=17
Caption="Адрес файла для скачивания:"
}
Add(Label,5959088,105,280)
{
Left=10
Top=60
Width=148
Height=17
Caption="Имя файла, куда сохранить:"
}
Add(Edit,12595752,525,147)
{
Left=10
Top=80
Width=425
Text="Image.jpg"
}
Add(Label,6924240,861,371)
{
Left=365
Top=175
Width=10
Height=17
Caption="0"
}
Add(Button,15458492,448,231)
{
Left=350
Top=120
Width=80
Height=25
Caption="Прервать"
link(onClick,6023390:doAbort,[])
}
Add(ProgressBar,3247869,924,364)
{
Left=10
Top=175
Width=350
ProgressColor=16711680
Point(doMax)
}
Add(Hub,4845090,770,364)
{
OutCount=3
link(onEvent1,3247869:doPosition,[])
link(onEvent2,6924240:doText,[])
link(onEvent3,15541039:doCompare,[(795,384)(795,454)])
}
Add(LineBreakEx,16033729,525,287)
{
Caption="len"
Type=3
link(_Data,6023390:ContentLength,[])
}
Add(LineBreakEx,10269870,826,273)
{
Caption="len"
Type=2
}
Add(Thread,11610816,378,203)
{
FastStop=0
link(onExec,6023390:doLoadFile,[(508,209)(508,230)])
}
Add(DoData,4089202,826,301)
{
link(onEventData,3247869:doMax,[(909,307)(909,377)])
link(Data,10269870:getVar,[])
}
Add(Hub,1612285,770,217)
{
link(onEvent1,7347341:doData,[])
link(onEvent2,4089202:doData,[(805,230)(805,307)])
}
Add(Synchronize,10070054,700,217)
{
link(onSync,1612285:doEvent1,[])
}
Add(Synchronize,13932024,714,364)
{
link(onSync,4845090:doEvent1,[])
}
Add(If_else,15541039,833,448)
{
link(onTrue,15980281:doTimer,[])
link(Op2,12392812:getVar,[])
}
Add(LineBreakEx,12392812,840,420)
{
Caption="len"
Type=2
}
Add(HubEx,14299393,280,196)
{
link(onEvent,5102370:doEvent1,[])
}
Add(Timer,15980281,882,448)
{
Interval=1
Enable=1
AutoStop=1
link(onTimer,16350153:doTimer,[])
}
Add(Timer,16350153,931,448)
{
Interval=1
Enable=1
AutoStop=1
link(onTimer,14299393:doWork3,[(977,454)(977,412)(284,412)])
}

карма: 2

0
Ответов: 4621
Рейтинг: 746
#520: 2020-11-16 18:24:04 ЛС | профиль | цитата
Вот такая комбинация приводит к увеличению памяти на новом FPC:


Add(Button,1322042,455,525)
{
Left=190
Top=125
link(onClick,14973397:doStart,[])
}
Add(InlineCode,11970995,560,525)
{
WorkPoints=#6:doWork|
EventPoints=#8:onResult|
VarPoints=#4:Var1|4:Var2|
DataPoints=#5:Data1|5:Data2|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|29: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|30: Data1, Data2: THI_Event;|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|52: procedure Var1(var _Data: TData; Index: Word);|52: procedure Var2(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|0:|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|3:var|21: FDLStream: PStream;|15:begin |91: FDLStream := NewFileStream('test.txt', ofOpenWrite or ofShareDenyNone or ofCreateAlways);|17: FDLStream.Free;|0:|8: |33: // ReadString(_Data, Data1, '')|33: // ReadInteger(_Data, Data2, 0)|42: // _hi_CreateEvent(_Data, @onResult, 0);|33: //_hi_OnEvent(onResult, 'abc');|4:end;|0:|0:|59:procedure THiAsmClass.Var1(var _Data: TData; Index: Word); |5:begin|22: dtInteger(_Data, 0);|4:end;|0:|59:procedure THiAsmClass.Var2(var _Data: TData; Index: Word); |5:begin|22: dtString(_Data, '');|4:end;|0:|4:end.|
}
Add(Thread,14973397,511,525)
{
FastStop=0
link(onExec,11970995:doWork,[])
}
Если убрать поток, отключить событие потока или в коде убрать создание файла - проблема исчезает. Пока разбираюсь.
карма: 26

0
Ответов: 207
Рейтинг: 14
#521: 2020-11-16 19:25:13 ЛС | профиль | цитата
При FDLStream := NewMemoryStream; память также растет.

Add(Button,1322042,427,140)
{
Left=190
Top=125
link(onClick,14973397:doStart,[])
}
Add(InlineCode,11970995,553,140)
{
WorkPoints=#6:doWork|
EventPoints=#8:onResult|
VarPoints=#4:Var1|4:Var2|
DataPoints=#5:Data1|5:Data2|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|29: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|30: Data1, Data2: THI_Event;|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|52: procedure Var1(var _Data: TData; Index: Word);|52: procedure Var2(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|0:|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|3:var|21: FDLStream: PStream;|15:begin |31: FDLStream := NewMemoryStream;|17: FDLStream.Free;|0:|8: |33: // ReadString(_Data, Data1, '')|33: // ReadInteger(_Data, Data2, 0)|42: // _hi_CreateEvent(_Data, @onResult, 0);|33: //_hi_OnEvent(onResult, 'abc');|4:end;|0:|0:|59:procedure THiAsmClass.Var1(var _Data: TData; Index: Word); |5:begin|22: dtInteger(_Data, 0);|4:end;|0:|59:procedure THiAsmClass.Var2(var _Data: TData; Index: Word); |5:begin|22: dtString(_Data, '');|4:end;|0:|4:end.|
}
Add(Thread,14973397,490,140)
{
FastStop=0
link(onExec,11970995:doWork,[])
}

карма: 2

0
Ответов: 4621
Рейтинг: 746
#522: 2020-11-19 12:22:20 ЛС | профиль | цитата
Для исправления утечки памяти при использовании потоков открыть файл HiAsm\compiler\FPC2\fpc.cfg, в строке 20 вместо "-O3" поставить "-O1", сохранить. После чего выполнить файлы
HiAsm\compiler\FPC2\src\_make_ALL_A.bat
HiAsm\compiler\FPC2\src\_make_ALL_U.bat
карма: 26

1
Голосовали:Joiner
Ответов: 60
Рейтинг: 0
#523: 2020-11-19 16:15:16 ЛС | профиль | цитата
То есть теперь лучше не использовать -O3 в fpc.cfg?

Редактировалось 2 раз(а), последний 2020-11-19 16:25:32
карма: 1

0
Ответов: 4621
Рейтинг: 746
#524: 2020-11-19 16:26:31 ЛС | профиль | цитата
Вероятно, не стоит только при компиляции системных модулей. После выполнения вышеуказанных скриптов опцию можно вернуть обратно, тогда она будет использована для конечных приложений. В случае если опять надо будет пересобрать RTL - надо будет опять предварительно выключить "-O3".
карма: 26

0
Ответов: 872
Рейтинг: 101
#525: 2020-12-06 01:22:06 ЛС | профиль | цитата
hiIntToBits.pas
в двух местах


  {$ifdef WIN64}
val := ReadInteger(_Data, _data_Value, 0)); // лишняя скобочка
{$else}
val := Round(ReadReal(_Data, _data_Value, 0));
{$endif}
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)