Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 8 9 [10]      все
 Re: Lazarus  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 5437
DmSer
А вот является ли async / await синтактическим сахаром по отношению к C# - не уверен. Разработчики механизма async / await в C# ввели новый подход к компиляции, при котором одна функция каждым упоминанием await расщепляется на подфункции, сохраняется состояние переменных на момент вызова await.
не перенимайте эти суеверия, ничего там не расщепляется
5 ноя 19, 14:08    [22009934]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
Василий 2
Member

Откуда:
Сообщений: 849
Дегтярев Евгений
1. речь не за браузер и ссылку на до было на доку ноды давать

1. Про браузер
2. Конкретики не было, просто упоминался JS
3. Нода добавила их 2018-06-20, тоже не вчера. А если по мажорным версиям смотреть, так вообще 3 версии назад
5 ноя 19, 14:22    [22009954]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1720
Василий 2,

таки в браузере уже tcp-сервера поднимать научились?
5 ноя 19, 16:00    [22010050]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 938
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-битный стек).

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


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

Меньше 64КБ вроде нельзя сделать max stack size.
6 ноя 19, 23:12    [22011126]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 5437
DmSer,

так, на затравку было бы интересно сколько нитей можно создать - CreateFiber
6 ноя 19, 23:49    [22011137]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 938
Проверил на рабочем компьютере, проц дешёвый AMD FX-4330 Quad Core. Windows 7 32-битная.
При Max stack size = 64КБ удалось создать 28682 доп. потока, ОЗУ потребляется 862МБ, время создания 1254 мс (создаётся 22 потока за 1 мс), в среднем выходит 30КБ ОЗУ на 1 поток.
7 ноя 19, 08:55    [22011200]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
rgreat
Member

Откуда:
Сообщений: 5470
Почему искажется строка?

{$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.
И конвертации при присвоении.

Результат одинаков:

К сообщению приложен файл. Размер - 4Kb


Сообщение было отредактировано: 8 ноя 19, 21:25
8 ноя 19, 21:20    [22012611]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
rgreat
Member

Откуда:
Сообщений: 5470
На вход:

К сообщению приложен файл. Размер - 2Kb
8 ноя 19, 21:20    [22012612]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3919
rgreat
Почему искажется строка?

Длины поля точно хватает?
9 ноя 19, 15:17    [22012778]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3411
rgreat,

а если так:

s1,s2 : string;

?
9 ноя 19, 15:18    [22012779]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
rgreat
Member

Откуда:
Сообщений: 5470
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?

Сообщение было отредактировано: 12 ноя 19, 17:40
12 ноя 19, 17:35    [22014689]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
b0rk
Member

Откуда: Харьков
Сообщений: 591
rgreat
В чем измеряется Size и DataSize?

В байтах. А все строки в Lazarus в UTF-8 кодировке.
12 ноя 19, 18:01    [22014721]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
rgreat
Member

Откуда:
Сообщений: 5470
b0rk,

Т.е. все Size указаные в БД локально надо умножать как минимум вдвое?
12 ноя 19, 18:16    [22014732]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3919
rgreat
В чем хранятся строки? В чем измеряется Size и DataSize?

Зависит от типа поля. Если поле TStringFiled то это будет размер в байтах для текущей локали, если TWideStringField то размер будет в WideChar.
12 ноя 19, 18:23    [22014739]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
rgreat
Member

Откуда:
Сообщений: 5470
Спасибо. Сделал так:

          with FieldDefs.AddFieldDef do begin
            Name:=FName;
{$IFDEF FPC}
            DataType:=ftWideString;
{$ELSE}
            DataType:=ftString;
{$ENDIF}
            Size:=FFieldDefs[i].Size;
          end;


Помогло.
12 ноя 19, 18:37    [22014747]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
Bali
Member

Откуда:
Сообщений: 61
Скопировал из Делфи модуль
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='????????'.

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

Вопрос: я что, должен сначала создать пустой модуль, а в него уже переность данные или при копировании нужно что то поднастроить?
17 ноя 19, 03:58    [22018051]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
rgreat
Member

Откуда:
Сообщений: 5470
Что-то у тебя с кодировкой pas файла, походу, раз константы уплыли.
17 ноя 19, 06:22    [22018058]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
Bali
Member

Откуда:
Сообщений: 61
rgreat,
Все там нормально с кодировкой, все работает.
Вопрос не в этом, а как переносить правильно из делфи в лазарус.
Если я сначала создаю модуль в Лазарус, а затем в него через буфер обмена копирую содержимое делфи модуля, то все работает,
а если я копирую делфи модуль в папку с лазарусом, то не работает по массиву строк.
17 ноя 19, 14:29    [22018189]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
alekcvp
Member

Откуда:
Сообщений: 1680
Bali
rgreat,
Все там нормально с кодировкой, все работает.
Вопрос не в этом, а как переносить правильно из делфи в лазарус.
Если я сначала создаю модуль в Лазарус, а затем в него через буфер обмена копирую содержимое делфи модуля, то все работает,
а если я копирую делфи модуль в папку с лазарусом, то не работает по массиву строк.

А лазарус модули не в UTF-8 сохраняет? Потому что дельфя, по-умолчанию, в Win.
17 ноя 19, 14:49    [22018193]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus  [new]
Bali
Member

Откуда:
Сообщений: 61
alekcvp,
Да, абсолютно точно, а из буфера перекодирует.
17 ноя 19, 16:37    [22018232]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 8 9 [10]      все
Все форумы / Delphi Ответить