Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio XE5-XE8, 10.x

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

Открыть новую тему     Написать ответ в эту тему

V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         
Обсуждаем новые возможности и баги
 
Просьба писать про Embarcadero RAD Studio XE5, XE6, XE7, XE8, 10.x (Seattle, Berlin,Tokyo)
  По вопросам скачивания - Тема в Варезнике (lite-версии тут)
  Вопросы по неюникодным версиям Delphi — шестая бумага
  Бесплатные Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus
  Коммерческие компоненты и утилиты для Delphi/BCB
  Вопросы по компонентам для Delphi, C++ Builder разных версий
  Новые языковые возможности, начиная с Delphi 2005 по XE4 — здесь, и New!здесь еще
  Англоязычный официальный форум Embarcadero — здесь
  Embarcadero Quality Central, веб интерфейс — здесь, новый Quality Portal тут
  Программирование на Delphi — викиверситет
  Другие ресурсы
   Предыдущие бумаги
 
     Вопросы ..XE4       Вопросы ..XE3    Вопросы ..XE2      
  Вопросы ..2009-XE    Вопросы ..<2009 / ч.5    Вопросы ..<2009 / ч.4      
  Вопросы ..<2009 / ч.3    Вопросы ..Delphi 2 / ч.2    Вопросы ..Delphi  

  Выключение встроенного эксперта Castalia  для XE8 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 904 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: AlekXL, 12:05 29-07-2017
Sulphide

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема следующего характера:
Есть приложение, иконка которого задается через настройки IDE - Project -  Options -  Application. ICO файлик содержит 9 иконок разного размера, изображение одно и то же. К проекту надо прикрутить иконку файла, которое приложение умеет загружать. Этот ICO файл содержит так же 9 разноразмерных иконок одного изображения. В сумме получается, что будет 2 набора иконок, один для exe второй для типа файла.  
Вручную создал fileicon.res и цепляю его на стадии компиляции {$R fileicon.res}, сразу после
{$R *.res}, как ни странно по другому он не подхватывается. Далее смотрю получившийся после билда exe ресторатором, вижу 2 набора иконок, MAINICON и MAINICON2 (Дельфи ставит их в алфавитном порядке и важно чтобы MAINICON был первым, как иконка приложения) Вобщем все ок. 2 набора по 9 иконок. НО! При просмотре exe файла проводником, маленькая иконка где-то 32x32 показывается как иконка от приложения, а при установке в проводнике обычного, крупного и огромного размера иконка exe меняется на второй набор иконок принадлежащий типу файлов... В чем может быть проблема?
Как вообще правильно добавить второй набор иконок? Через *.RC? У меня не сработало...

Всего записей: 126 | Зарегистр. 20-03-2008 | Отправлено: 16:14 31-08-2018 | Исправлено: Sulphide, 16:19 31-08-2018
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
У ресурсов есть не только айди, но и язык. Поэтому могут существовать иконки с одинаковыми айди но разными языками. Так что если вам нужно просто добавить иконку, то лучше это делать через IDE - Project - Resources and Images. Тогда хоть с языками будет порядок.

Всего записей: 2188 | Зарегистр. 24-05-2007 | Отправлено: 19:25 31-08-2018
Sulphide

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
Frodo_Torbins

Спасибо! Так сработало, видимо проблема каким то образом была связана действительно с языком, хотя непонятно как именно, у главной иконки стоял США, у второй язык нейтральный, ID притом у всех иконок разные от 1го до 18ти соответственно, добавил через ресурсы и картинки и теперь всё ок! Теперь в проводнике при любых размерах показывается только первая иконка. Я как-то даже и не заглядывал в этот пункт меню лет за 20 ниразу ))

Всего записей: 126 | Зарегистр. 20-03-2008 | Отправлено: 23:27 31-08-2018 | Исправлено: Sulphide, 23:33 31-08-2018
zedxxx

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Delphi 10.2.3 CE безобразничает - взяла и открыла в браузере страничку _https://community.embarcadero.com/events

Всего записей: 973 | Зарегистр. 14-07-2008 | Отправлено: 14:02 01-09-2018
DmitryB2005

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, а у всех не скрываются панели компонентов в 10.2.3 и билде 25.0.31059.3231  студии ?
У меня при нажатии на кнопку свернуть она отстыковывается в отдельное окошко. В предыдущей версии(10.2 первый апдейт) я такого не замечал поведения. Не пойму, как побороть эту напасть.

Всего записей: 71 | Зарегистр. 24-09-2005 | Отправлено: 12:32 09-09-2018
vez



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Народ, а у всех не скрываются панели компонентов в 10.2.3 и билде 25.0.31059.3231  студии ?  

 
Нет там кнопки свернуть, если она видна то значит панель уже отсоединена, её надо снова подсоединить.  
В норме есть толко кнопак закрыть и switch закрепить

Всего записей: 420 | Зарегистр. 02-06-2003 | Отправлено: 12:45 09-09-2018
Sulphide

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DXE 10.2.3
Надо было обработать 5000 xml файлов... ~500Кб каждый и содержит ~500 нодов (строк на выходе со всеми столбцами для базы). Решил сделать некий csv текстовый файлик и загнать его через bulk upload в базу (тут может быть любая база, не суть). Сделано для того, чтобы не аппендить по одной строчке в базу (оч.долго, около 7 часов), а сразу целиком загрузить данные из текстового файла. Сразу скажу что приложение x64, никаких проблем с памятью быть не может (А вот может и еще как, как оказалось). В пике потребление приложением ~1.7Гб.
 
И тут я столкнулся со странным поведением TStringList...
 
Суть проблемы:
 
==========================
csv: TStringList;
f: TFileStream;
 
csv := TStringList.create;
csv.WriteBOM := true;
csv.TrailingLineBreak := true;
f := TFileStream.create('list.txt', fmCreate);
 
for ...
...цикл парсинга xml'ек  
csv.Append(получившаяся строка 500 символов)
...end;
 
csv.SaveToStream(f, TEncoding.UTF8);
==========================
 
При обработке небольшого количества xml файлов - все шоколадно, все работает, сохраняется, создается... Не могу сказать точно после какого количества файлов наступает проблема с TStringList, но после обработки всех 5000 файлов, это где-то 2.5 миллиона строк на выходе, при попытке сделать csv.SaveToStream наступает полная тишина... Дисковой активности ровно 0, процессор никак не грузится, никаких ошибок... Делаю я все это в отдельном потоке, но не думаю, что TStringList имеет с этим какие-то проблемы. В документации написано, что ограничений по объему данных TStringList не имеет, количество строк 134 миллиона (у меня 2.5 миллиона)
В чем могут быть грабли? Пока ощущение, что TStringList.SaveToStream не умеет в файлы больше гигабайта (как оказалось на практике в файлы больше MAXINT = ~2 гигабайтам)... Под дебаггером если это запускать, я раньше состарюсь )
 
зы пока сделал запись в файл без TStringList просто построчно записывая результат  в файл. Но мне кажется так намного дольше...
ззы проблем нет после обработки половины файлов ~2500шт. (~670Мб текстовый файл), ~4000 файлов (~1 гигабайт текст).
 
Пока писал заглянул в TStringList.SaveToStream... там везде оперируется integer'ами... И получение буфера тоже. А значит буфер может быть только MAXINT... Печаль, беда, да и просто подстава... Ну и нафиг x64 вообще?
 
function TEncoding.GetBytes(const Chars: array of Char): TBytes;
var
  Len: Integer;
begin
  Len := GetByteCount(Chars);
  SetLength(Result, Len);
  GetBytes(Chars, 0, Length(Chars), Result, 0);
end;

Всего записей: 126 | Зарегистр. 20-03-2008 | Отправлено: 04:58 11-09-2018 | Исправлено: Sulphide, 06:05 11-09-2018
MBo

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
Проблема с гигабайтом в TStringList действительно есть, связана она с двойным перерасходом памяти в момент формирования единой строки-буфера (как при выгрузке, так и при загрузке).
 
Можно посоветовать формировать промежуточные TStringList разумного размера и периодически дописывать их содержимое в файл с помощью дозаписи через TFileStream или из современных методов: http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.IOUtils.TFile.AppendAllText

Всего записей: 29 | Зарегистр. 02-09-2004 | Отправлено: 05:43 11-09-2018
Sulphide

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBo
Да, можно и так... Пока оставил запись в файл построчно, без TStringList, что-то типа такого:
 
      s := Format('%-10s|%-350s|%-5s|%-10s|%-10s|%-100s', [s1, s2, s3, s4, s5, s6]);
      f.WriteBuffer(PChar(s)^,Length(s));
 
Просто этож получается, что подставу можно где угодно поймать при работе с достаточно большими объемами данных... И это стандартная библиотека дельфи... И никто ведь это не исправляет... Хотя все исправления сводятся к замене Integer на NativeInt

Всего записей: 126 | Зарегистр. 20-03-2008 | Отправлено: 05:54 11-09-2018 | Исправлено: Sulphide, 06:12 11-09-2018
MBo

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> Хотя все исправления сводятся к замене Integer на NativeInt
 
Нет, не все. Общий объем упаковывается в строку, а её длина ограничена 32-битным счётчиком в любой системе (хоть 32, хоть 64), и ломать совместимость вряд ли будут.
 
Упаковка всего объёма в одну строку - тоже неадекватное действие. Но судя по периодическим обсуждениям, никто это трогать пока не собирается.

Всего записей: 29 | Зарегистр. 02-09-2004 | Отправлено: 08:40 11-09-2018 | Исправлено: MBo, 08:40 11-09-2018
Sulphide

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Общий объем упаковывается в строку

Вот именно что в строку! Этого просто не должно быть... А то выходит, что: "У нас бесконечный по объёму TStringList, он может содержать 134 миллиона элементов, но сохранить его его же родной функцией вы не сможете, обломитесь " Как-то даже смешно, ну серъезно. Есть объект у объекта есть метод, который по факту не работает... А по факту не работает уже 2 метода, первый и SaveToFile...

Всего записей: 126 | Зарегистр. 20-03-2008 | Отправлено: 09:22 11-09-2018 | Исправлено: Sulphide, 09:56 11-09-2018
Eternal_Shield

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
Ммммм, а то мешает сделать наследника от TStringBuilder и добавить в него SaveToFile c тупым Write(hFile, FData, Length)?

Всего записей: 709 | Зарегистр. 18-05-2009 | Отправлено: 11:01 11-09-2018 | Исправлено: Eternal_Shield, 11:01 11-09-2018
Zatupitel



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А в чем сложность 5000 файлов залить по одному?
Зачем вообще все сливать в один поток, если вдруг на предпоследней строчке
произойдет какой-нибудь глюк и все надо делать сначала?
Пробовал заливать из обычного csv файла данные в БД (около 200 млн. записей), заняло минут 20.
xml пробовал заливать через преобразование в csv файл. 100 тыс. строк преобразования в плоский файл заняло секунд 15.  Зачем такие сложности?
Если надо быстрее, то отключите индексы в БД на время заливки, потом проиндексируйте, будет быстрее.

Всего записей: 309 | Зарегистр. 31-08-2006 | Отправлено: 11:19 11-09-2018 | Исправлено: Zatupitel, 11:20 11-09-2018
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
Если вас что то не устраивает, то напишите на quality.embarcadero.com, в чем проблема?

Всего записей: 2188 | Зарегистр. 24-05-2007 | Отправлено: 11:19 11-09-2018
Sulphide

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ммммм, а то мешает сделать наследника от TStringBuilder и добавить в него SaveToFile c тупым Write(hFile, FData, Length)?

Ничего не мешает, просто надо, чтобы сначала эмба тебя окунула в свое говнецо, чтобы понять, что что-то не работает. Не так ли?!..
 
А вообще изначально любой здравомыслящий человек будет предполагать, что если в стандартной библиотеке есть некий объект и у объекта есть метод, то этот метод работает на 100%. Ну видимо тут я ошибаюсь и у некоторых метод может работать чуть-чуть или на половину или вообще не работать... Это-то и печально.

Цитата:
А в чем сложность 5000 файлов залить по одному?  
Зачем вообще все сливать в один поток, если вдруг на предпоследней строчке

Проект больше был как эксперимент, определенной цели не стояло. Ну разве что саморазвития для. Просил друг. До этого с БД фактически не работал ни разу. Заливалось в базу ms access. Никаких проблем залить в 16, например, потоков нет, но цели такой не стояло, для начала надо было сделать, чтобы работало. Вся работа через ADO. Сам access у меня не стоит, поставил только x64 рантайм от MS для Access. Создание базы через OLE. Провайдер ACE.16.0. Проблем особых нет, ну разве что заливка в базу через append длилась 7 часов для 2.5млн записей - это без преобразования в csv, а напрямую поэлементно из xml. Поэтому и переделал на bulk upload, тоесть xml -> csv -> бд. Тут проблем со скоростью вообще нет.

Цитата:
Если вас что то не устраивает, то напишите на quality.embarcadero.com, в чем проблема?


Цитата:
Упаковка всего объёма в одну строку - тоже неадекватное действие. Но судя по периодическим обсуждениям, никто это трогать пока не собирается.

 
зы тема-то про обсуждение новых возможностей и багов, вот и обсуждаем. Вдруг кому пригодится.
зыы в итоге в конце, было решено, что учить человека работе с БД и выборки из нее - это лишнее и все залилось в одну xlsx книгу с тремя листами... 200+ мб xlsx файлик... ну как говорится хозяин - барин.)))
 
Мда... Тут вообще "произведение искусства" просто:
 
function TStrings.Add(const S: string): Integer;
begin
  Result := GetCount;
  Insert(Result, S);
end;
 
procedure TStrings.Append(const S: string);
begin
  Add(S);
end;
 
Вот так думаешь - "Ок, Append не возвращает результата, ну наверное работает быстрее, чем Add и в гигантских циклах он обязателен, ведь нам же не нужен результат индекса"... *а эмба тихо ржет за углом* Ну почему нельзя написать  
 
procedure TStrings.Append(const S: string);
begin
   Insert(GetCount, S);
end;
 
??? Зачем еще один вызов? Треш и угар... А в fpc по-моему вообще не заморачиваются и тупо копируют исходники у дельфей, потому что 1 в 1.

Всего записей: 126 | Зарегистр. 20-03-2008 | Отправлено: 23:17 11-09-2018 | Исправлено: Sulphide, 06:44 12-09-2018
ChSerg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
Проанализируйте другие RTL. Например, для С++, С# или Java. Будету также приятно удивлены.

Всего записей: 861 | Зарегистр. 30-08-2001 | Отправлено: 09:02 12-09-2018
Zatupitel



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробежала инфо, что вышла Delphi 10.3 Carnival Beta.  
Я так понимаю, в октябре-ноябре выпустят релиз.
 

Всего записей: 309 | Зарегистр. 31-08-2006 | Отправлено: 17:17 17-09-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio XE5-XE8, 10.x

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru