powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus
25 сообщений из 314, страница 10 из 13
Lazarus
    #39885260
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
А вот является ли async / await синтактическим сахаром по отношению к C# - не уверен. Разработчики механизма async / await в C# ввели новый подход к компиляции, при котором одна функция каждым упоминанием await расщепляется на подфункции, сохраняется состояние переменных на момент вызова await.
не перенимайте эти суеверия, ничего там не расщепляется
...
Рейтинг: 0 / 0
Lazarus
    #39885272
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений
1. речь не за браузер и ссылку на до было на доку ноды давать

1. Про браузер
2. Конкретики не было, просто упоминался JS
3. Нода добавила их 2018-06-20, тоже не вчера. А если по мажорным версиям смотреть, так вообще 3 версии назад
...
Рейтинг: 0 / 0
Lazarus
    #39885326
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2,

таки в браузере уже tcp-сервера поднимать научились?
...
Рейтинг: 0 / 0
Lazarus
    #39885994
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSerПри создании треда выделяется совсем небольшое физической памяти (примерно 8 - 16 КБ на стек), причем оно никак не связано с параметром "max stack size".


На моём ноутбуке (куплен в 2013г, Core i3, 8ГБ ОЗУ, Windows 7 64-битная) с Delphi 2007 вот что получается:
- при дефолтном max stack size удалось создать 1500 потоков, используется 104МБ ОЗУ, время создания 104мс, в среднем 70КБ на поток (32-битный + 64-битный стек).
- при max stack size 64КБ удалось создать 6000 потоков, используется 398МБ ОЗУ, время создания 351мс, в среднем 66КБ на поток (32-битный + 64-битный стек).

Код потока следующий:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TMyThread.Execute;
begin
  FreeOnTerminate := True;
  InterlockedIncrement(ThreadCount);
  while not Stop do
    Sleep(1000);
  InterlockedDecrement(ThreadCount);
end;



В обоих случаях загрузка процессора = 0% (менеджер памяти при работе потоков не задействуется).

Меньше 64КБ вроде нельзя сделать max stack size.
...
Рейтинг: 0 / 0
Lazarus
    #39886002
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

так, на затравку было бы интересно сколько нитей можно создать - CreateFiber
...
Рейтинг: 0 / 0
Lazarus
    #39886046
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил на рабочем компьютере, проц дешёвый AMD FX-4330 Quad Core. Windows 7 32-битная.
При Max stack size = 64КБ удалось создать 28682 доп. потока, ОЗУ потребляется 862МБ, время создания 1254 мс (создаётся 22 потока за 1 мс), в среднем выходит 30КБ ОЗУ на 1 поток.
...
Рейтинг: 0 / 0
Lazarus
    #39886955
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему искажется строка?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{$MODE DELPHIUNICODE} 

var
  s1,s2 : UnicodeString;
  DS : TMemDataSet;
begin
  s1:='Северо-Кавказская';
  DS.Fields[0].AsUnicodeString:=s1;
  s2:=DS.Fields[0].AsUnicodeString;
end;



Пробовал и AsString и AsAnsiString и AsUTF8String и AsWideString.
И конвертации при присвоении.

Результат одинаков:
...
Рейтинг: 0 / 0
Lazarus
    #39886956
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вход:
...
Рейтинг: 0 / 0
Lazarus
    #39887050
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Почему искажется строка?

Длины поля точно хватает?
...
Рейтинг: 0 / 0
Lazarus
    #39887051
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

а если так:

s1,s2 : string;

?
...
Рейтинг: 0 / 0
Lazarus
    #39888191
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Длины поля точно хватает?
Однако действительно не хватает.
https://wiki.freepascal.org/Database_field_type#Size.2C_DataSize_and_Unicode
автор Size, DataSize and Unicode
Note that for string type fields, Size indicates the number of characters that can be stored. As indicated in FPC Unicode support#Introduction, FPC up to and including 2.6 only deals with ANSI/ASCII single byte characters; it does not support Unicode/UTF8/UTF16/Unicodestring characters.

The read-only property DataSize indicates the field size in bytes.

If you use multibyte characters (e.g. UTF8 or UTF16/Unicodestring encoded), DataSize and Size do not mean the same thing. If you use only ANSI/ASCII characters, DataSize and Size are effectively the same thing.
Что-то как-то не понятно как это все с реальностью бьется ибо в поле с Size=30 текст 'Северо-Кавказская' не влазит.

В чем хранятся строки? В чем измеряется Size и DataSize?
...
Рейтинг: 0 / 0
Lazarus
    #39888208
b0rk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
В чем измеряется Size и DataSize?

В байтах. А все строки в Lazarus в UTF-8 кодировке.
...
Рейтинг: 0 / 0
Lazarus
    #39888215
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0rk,

Т.е. все Size указаные в БД локально надо умножать как минимум вдвое?
...
Рейтинг: 0 / 0
Lazarus
    #39888219
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
В чем хранятся строки? В чем измеряется Size и DataSize?

Зависит от типа поля. Если поле TStringFiled то это будет размер в байтах для текущей локали, если TWideStringField то размер будет в WideChar.
...
Рейтинг: 0 / 0
Lazarus
    #39888224
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Сделал так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
          with FieldDefs.AddFieldDef do begin
            Name:=FName;
{$IFDEF FPC}
            DataType:=ftWideString;
{$ELSE}
            DataType:=ftString;
{$ENDIF}
            Size:=FFieldDefs[i].Size;
          end;



Помогло.
...
Рейтинг: 0 / 0
Lazarus
    #39890123
Bali
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скопировал из Делфи модуль
Код: pascal
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.
unit blVarList;

{$mode objfpc}{$H+}

interface

uses
  SysUtils, Classes, StrUtils, variants, bslStrings, IniFiles,  VarConsts, bslDBUtils, bslDateUtils;

type
  tTipVarList = (lsNone, lsDOC, lsFirma, lsPartner, lsGrPol, lsGrOtpr,
    lsPP, lsNal, lsNakl, lsGrPerevoz, lsTABNom, lsFactur);

  tTipDateVar =(
    tdCurMY, tdCurM, tdCurY,
    tdPredMY, tdPredM, tdPredY,
    tdCurPeriod, tdCurKV,
    tdFDCurMonth, tdLDCurMonth,
    tdFDNextMonth, tdLDNextMonth,
    tdFDPriorMonth, tdLDPriorMonth,
    tdCurDate,
    tdFDCurPeriod, tdLDCurPeriod,
    tdFDNextPeriod, tdLDPriorPeriod,
    tdFDCurPeriod_Int, tdLDCurPeriod_Int, tdCurPeriod_Int,
    tdFDCurPeriod_DateTime, tdLDCurPeriod_DateTime, tdCurPeriod_DateTime,
    tdDatePrn, tdDateSostavlen, tdBegDateBankOplat, tdEndDateBankOplat,
    tdBegDateBankRasPeriod, tdEndDateBankRasPeriod,
    td1_MCurKV, td2_MCurKV, td3_MCurKV,
    tdRasPeriodBegYear,
    tdBegRasPeriodDate, tdEndRasPeriodDate);

const

DateVars: array[TTipDateVar] of String =(
    'ТекМесГод', 'ТекМес', 'ТекГод',
    'ПредМесГод', 'ПредМес', 'ПредГод',
    'ТекПериод', 'ТекКвартал',
    'НачТекМесДата', 'КонТекМесДата',
    'НачСледМесДата', 'КонСледМесДата',
    'НачПредМесДата', 'КонПредМесДата',
    'ТекДата',
    'НачТекПериодДата', 'КонТекПериодДата',
    'НачСледПериодДата', 'КонПредПериодДата',
    'BegPeriodIntDate', 'EndPeriodIntDate', 'PeriodIntDate',
    'BegPeriodDate', 'EndPeriodDate', 'PeriodDate',
    'ДатаПечати', 'ДатаСоставления', 'НачСрокОплат', 'КонСрокОплат',
    'НачПериодРасПлат', 'КонПериодРасПлат',
    '1_МесТекКВ', '2_МесТекКВ', '3_МесТекКВ',
    'РасчетПериодНачГод',
    'НачРасчетПериодДата', 'КонРасчетПериодДата');
    
implementation    
    
Function GetPosDateVars(const varName: string): integer;
var
    s: string;
begin
  s := DateVars[tdCurMY];
  result := AnsiIndexText(VarName, DateVars);
end;



из Фастрепорта получаю VarName='ТекМесГод', по массиву DateVars ничего не находит result=-1, строка s='????????'.

Копирую модуль в буфер, удаляю его из Лазарус, создаю пустой модуль с таким же именем, вставляю данные из буфера, все работает как положено, переменные вставляются в отчет.

Вопрос: я что, должен сначала создать пустой модуль, а в него уже переность данные или при копировании нужно что то поднастроить?
...
Рейтинг: 0 / 0
Lazarus
    #39890126
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у тебя с кодировкой pas файла, походу, раз константы уплыли.
...
Рейтинг: 0 / 0
Lazarus
    #39890174
Bali
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat,
Все там нормально с кодировкой, все работает.
Вопрос не в этом, а как переносить правильно из делфи в лазарус.
Если я сначала создаю модуль в Лазарус, а затем в него через буфер обмена копирую содержимое делфи модуля, то все работает,
а если я копирую делфи модуль в папку с лазарусом, то не работает по массиву строк.
...
Рейтинг: 0 / 0
Lazarus
    #39890175
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bali
rgreat,
Все там нормально с кодировкой, все работает.
Вопрос не в этом, а как переносить правильно из делфи в лазарус.
Если я сначала создаю модуль в Лазарус, а затем в него через буфер обмена копирую содержимое делфи модуля, то все работает,
а если я копирую делфи модуль в папку с лазарусом, то не работает по массиву строк.

А лазарус модули не в UTF-8 сохраняет? Потому что дельфя, по-умолчанию, в Win.
...
Рейтинг: 0 / 0
Lazarus
    #39890190
Bali
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp,
Да, абсолютно точно, а из буфера перекодирует.
...
Рейтинг: 0 / 0
Lazarus
    #39909532
alikisay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bali,
Лазарь все исходники сохраняет в кодировке UTF8. Delphi в кодировке по умолчанию системы.
Вообще походу Лазарь заточили на этот дебильный высер - UTF8 только для совместимости с linux. Возможно иного приемлимого решения не нашлось.
Всё это конечно крайне печально. Весь опыт работы со строками приходится переосмысливать, самописные библы выкидывать в мусорку.
После такого начинаешь задумываться, а надо ли оно это переходить из загибающегося Дельфя в Лазарь, если всё одно предыдущим опытом не попользуешься толком, и дебилизмов С++ все одно избежать не удастся. Мож уж луче встраиваться в когорту программистов от микрософта, которым специально запрещают думать об исключении паразитного кода и лишних операций. Которым когда говоришь про оптимизацию кода, то они впадают в истерику, катаются по полу, сучат ногами и орут, что не вставляют нигде делаев.
Сижу пишу прием SMSок с мамеда, и думаю: ну ладно щас я это сделаю, как нибудь решу, но вот в дальнейшем оно мне это надо???
...
Рейтинг: 0 / 0
Lazarus
    #39909535
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alikisay,

Я, попробовав кодить на лазаре, предпочитаю без крайней необходимости на нем не кодить.

А единственная причина на данный момент кодить на лазаре для меня - кроссплатформенная (линукс) графика. С этим в дельфях пока все плохо.

В остальном же дельфи несравнимо удобней и продуманней.
...
Рейтинг: 0 / 0
Lazarus
    #39909538
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alikisay,

Delphi "загибается" уже больше 20ти лет. И еще, думаю, как минимум, будет столько "загибаться". Поэтому можешь спокойно на нем дальше и работать.
И, да, Лазарь и fpc собирается переводить строки дефолтно на такие же как в Делфи. По срокам не скажу.
...
Рейтинг: 0 / 0
Lazarus
    #39909558
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
В остальном же дельфи несравнимо удобней и продуманней.

После лазаревой LCL на дельфийскую VCL смотреть не хочется.
...
Рейтинг: 0 / 0
Lazarus
    #39909566
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
alikisay,

Я, попробовав кодить на лазаре, предпочитаю без крайней необходимости на нем не кодить.

А единственная причина на данный момент кодить на лазаре для меня - кроссплатформенная (линукс) графика. С этим в дельфях пока все плохо.

В остальном же дельфи несравнимо удобней и продуманней.


хороший IDE, хороший компилятор - что еще нужно, чтобы встретить старость :)
...
Рейтинг: 0 / 0
25 сообщений из 314, страница 10 из 13
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]