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

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

Модерирует : 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 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

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

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 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: Komandor, 18:58 18-03-2022
Frodo_Torbins

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

Цитата:
На счёт перечисления в обратную сторону. Такой конструкции нет, но всегда можно сделать свойство/функцию Reversed которая будет возвращать объект/запись (что предпочтительнее) у которых будет собственный перечислитель или они будут инициализировать родительский перечислитель передавая в параметре направление перебора.

Можно пойти еще дальше, и реализовать в перечислителе поиск элементов типа такого:

Код:
for Obj in MyObjects.Find.Like('foo') do:
// что то делаем с объектами, у которых поле имени содержит 'foo'

Причем тут даже и придумывать ничего не надо. Готовые классы таких коллекций уже есть в сторонних библиотеках, нужно только отнаследоваться.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 17:38 02-11-2017 | Исправлено: Frodo_Torbins, 17:41 02-11-2017
kaz_av

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

Цитата:
Можно пойти еще дальше, и реализовать в перечислителе поиск элементов

Да, с перечислителями много чего интересного можно сделать

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 18:20 02-11-2017
moivhod

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

Цитата:
Хинт: перед установкой создай в ProgramData символическую ссылку с этим именем на любой пустой каталог на любом свободном диске. Может получиться - и инсталл начнет юзать именно этот "подготовленный путь".  

 
Коллеги, у кого-нибудь сработал данный способ? У меня трюк с символьной ссылкой не проходит. На системнике 11Гб.  

Всего записей: 35 | Зарегистр. 26-03-2012 | Отправлено: 01:09 03-11-2017
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
moivhod
У меня вроде работало с Junction Point на старых релизах.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 14:03 03-11-2017
moivhod

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

Цитата:
Коллеги, у кого-нибудь сработал данный способ? У меня трюк с символьной ссылкой не проходит. На системнике 11Гб.

 
Нарыл на просторах Интернета такой способ:
 
   - кто ставит с нуля, сначала проводим генерацию файла активации кейгеном, потом отменяем установку, закрываем установщик.
   - создаем директорию, где будет лежать временное хранилище, например: "D:\shit"
   - копируем в нее директорию "C:\ProgramData\Embarcadero" (инсталлеру нужны будут файл лицензии и конфига).
   - открываем редактор реестра (regedit или какой другой) (Win+R ввести regedit)
   - в редакторе реестра идем сюда:
 
Код:
 
для 64-bit OC:    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\ProfileList
для 32-bit OC: (эту версию не проверял)    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
 
   - запоминаем значение ключика ProgramData, потом нужно будет восстановить.
   - меняем ключик ProgramData, чтобы указывал на нашу директорию, т.е. в нашем случае на: "D:\shit"
   - Запускаем установку.
   - После установки студии восстанавливаем предыдущее значение ProgramData (%SystemDrive%\ProgramData), это важно!!! не забудьте!!! и перегружаемся

Всего записей: 35 | Зарегистр. 26-03-2012 | Отправлено: 14:37 03-11-2017 | Исправлено: moivhod, 14:37 03-11-2017
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hi All,
 
Delphi 10.2.1
 
Кто работал со встроенным классом  System.Zip.TZipFile ?
Что то он не хочет от у меня работать с потоками.
Есть такой код:

Код:
var
  oZipFile :TZipFile;
  oZipHeader :TZipHeader;
  oInStream    :TStream;
  oOutStream    :TStream;
 
...
 
 oZipFile := TZipFile.Create();
 oInStream := TMemoryStream.Create();
 oOutStream  := TMemoryStream.Create();  
 
 TBlobField(oField).SaveToStream(oInStream);
 oZipFile.Open(oInStream, zmRead);
 TMemoryStream(oStream).SaveToFile('d:\test.zip');
 oZipFile.Read(0, oOutStream, oZipHeader);
 

В поле oField находиться zip-архив (в архиве один файл 1.sql) который я сохраняю из базы в поток oInStream.
Открываю этот архив из потока oZipFile.Open, для цели тестирования сохраняю его на диск (я проверял этот сохраненный test.zip - открывается любыми zip-архиваторами).
Но при попытке распаковать этот архив в выходной поток oZipFile.Read
получаю ошибку 'Invalid Zip Local Header signature'.
 
Если код немного поменять

Код:
 oZipFile := TZipFile.Create();
 oInStream := TMemoryStream.Create();
 oOutStream  := TMemoryStream.Create();  
 TBlobField(oField).SaveToStream(oInStream);
 TMemoryStream(oInStream).SaveToFile('d:\test.zip');
 oZipFile.Open('d:\test.zip', zmRead);
 oZipFile.Read(0, oOutStream, oZipHeader);
 

То есть я открываю архив не из потока, а из файла - тогда все работает без ошибок.
 
То есть получается, что в классе TZipFile есть ошибка при открытии архива из потока ?

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 11:12 09-11-2017 | Исправлено: StalkerSoftware, 11:14 09-11-2017
kaz_av

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

Цитата:
То есть получается, что в классе TZipFile есть ошибка при открытии архива из потока ?

Наверняка дело в позиции потока. Перед чтением сделай: oInStream.Seek(0, soBeginning);

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 12:06 09-11-2017
StalkerSoftware



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

Цитата:
Наверняка дело в позиции потока. Перед чтением сделай: oInStream.Seek(0, soBeginning);
 

Большое Вам спасибо за помощь.
Действительно, стоило только перед  
oZipFile.Open(oInStream, zmRead);  
вставить код
oInStream.Position := 0;
как все заработало.
 
Но все равно ИМНО странно: Получается, что при открытии из файла они устанавливают нулевую позицию своего внутреннего потока, а при открытии из потока нет.
 

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 16:21 09-11-2017 | Исправлено: StalkerSoftware, 16:26 09-11-2017
ChSerg



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Наверное, подразумевается, что в потоке может быть не только zip-архив, а еще какие-нибудь данные. Типа сериализации в поток.

Всего записей: 936 | Зарегистр. 30-08-2001 | Отправлено: 17:57 09-11-2017
kaz_av

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

Цитата:
Получается, что при открытии из файла они устанавливают нулевую позицию своего внутреннего потока, а при открытии из потока нет.

Нет, обычно, позицией потока вообще не управляют. Это может быть удобно, когда в потоке перед считываемыми данными есть что-то ещё. Ну а при открытии файла она всегда находится в самом начале.

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 18:11 09-11-2017 | Исправлено: kaz_av, 19:00 09-11-2017
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av
 
Еще немного по поводу System,Zip.TZipFile: в файле System,Zip описано 17 методом сжатия zip-файла (TZipCompression).
Но по факту получается, что в TZipFile реализовано только два метода zcDeflate и zcStored.
То есть остальные 15 не реализованы. Хотя вроде бы можно самому написать их реализацию для TStreamConstructor.
Интересно, зачем они там столько методов описали, если реализовали только 2 ...
 
Справедливости ради могу сказать, что сжатие файл в TZipFile (zcDeflate) и TVCLZip (PackLevel = 9 - максимальный уровень сжатия) почти одинаковые.
 
Добавлено:
Hi All,
 
Есть такой код:

Код:
procedure Test1(oStream :TStream);
begin
 
end;
 
procedure Test2(out oStream :TStream);
begin
 
end;
 
function Test3() :TStream;
begin
 
end;

Вызываю эти методы:

Код:
var
  oStream :TStream;
 ...
 Test1(oStream);
 Test2(oStream);
 oStream := Test3();
 

Тут все компилируется без ошибок.

Код:
var
  oStream :TMemoryStream;
 ...
 Test1(oMemStream);
 Test2(oMemStream);
 oMemStream := Test3();
 

А вот здесь для строки Test2 и Test3 получаю ошибку про несовместимость типов.
 
Но ведь TMemoryStream наследник TStream и для Test1 ошибки не возникает.
Почему же она возникает для Test2 и Test3 ?
 

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 15:14 13-11-2017 | Исправлено: StalkerSoftware, 15:36 13-11-2017
abyss79

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

Цитата:
TMemoryStream наследник TStream

Именно в этом и проблема. TStream не включает в себя TMemoryStream. Вот в обратную сторону работает, что и показывают первые тесты.

Всего записей: 77 | Зарегистр. 23-11-2007 | Отправлено: 15:42 13-11-2017
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Если мы имеем случай

Код:
 
type
  TExtObj = class(TObject);
var
  ExtObj: TExtObj;
 
procedure Proc(Obj :TObject);
begin
end;
 
Proc(ExtObj)
 

то в процедуру Proc можно передавать любого наследника от TObject, поскольку любой наследник содержит всебе полностью класс TObject, а процедура какраз и работает  с скласом TObject. Другими словами в данном случае мы передаем процедуре все, что ей надо (TObject) и еще немного (дополнительные поля и методы наследника), это нем ного процедура игнорирует.  
 
Если же мы имеем случай

Код:
 
type
  TExtObj = class(TObject);
var
  ExtObj: TExtObj;
 
function Func: TObject;
begin
end;
 
ExtObj := Func;
 

то функция ничего не знает о классе TExtObj, она возвращает TObject. Получается, что после такого присваивания ExtObj будет содержать не полный класс TExtObj, а только его часть в виде TObject.
Даже если в самой функции фактически создается и возращается TExtObj, то компилятор об  этом не знает, ведь ему указан возвращаемый тип TObject, на который он и ориентируется. Другими словами возвращая класс предок функция не полностью "укомплектовывает" класс наследник.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 18:36 13-11-2017
kaz_av

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

Цитата:
Интересно, зачем они там столько методов описали, если реализовали только 2 ...

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

Цитата:
А вот здесь для строки Test2 и Test3 получаю ошибку про несовместимость типов.

Любому предку можно присвоить значение типа-потомка, а наоборот нельзя (вообще, конечно, можно, если очень хочется).

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 22:40 13-11-2017 | Исправлено: kaz_av, 22:41 13-11-2017
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую всех. Нужно выполнить определённые запросы в DBFки. Использую FIREDAC, драйвер ADS. Всё по инструкции. Подключение выполняется, часть необходимых запросов тоже, но при выполнении основного запроса для сводного отчёта результат пустой. Хотя при выполнении через FoxPro или подобными инструментами результат есть. Ошибок не выдаёт просто пустой результат. Не понимаю с чем это связано.

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 11:12 16-11-2017
Zatupitel



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

Цитата:
Хотя при выполнении через FoxPro или подобными инструментами результат есть. Ошибок не выдаёт просто пустой результат. Не понимаю с чем это связано.

Сталкивался с подобным, но только наоборот. В других инструментах работает, а в FoxPro нет. Дело было в версии драйвера. Пришлось подбирать рабочий вариант.
Может драйвер не все умеет делать ? Я бы попробовал для начала сделать не на FireDAC, а на UniDAC от Devart.
Дока по работе с DBF.
Он поддерживает формат VFP. Но нужно пробовать.

Всего записей: 465 | Зарегистр. 31-08-2006 | Отправлено: 14:22 17-11-2017 | Исправлено: Zatupitel, 14:27 17-11-2017
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zatupitel
Спасибо. Обязательно в выходные попробую. При удалении всех индексов(*.cdx) запрос начинает частично работать. Думаю на нарушение целостности базы.

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 15:05 17-11-2017
Zatupitel



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

Цитата:
При удалении всех индексов(*.cdx) запрос начинает частично работать. Думаю на нарушение целостности базы.

Базы или индекса ? Если индекса, то RECREATE. Но я обычно делал через бэкап:

Код:
 
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\mydata')
USE order ORDER 0   &&чтобы считывать записи без учета индекса!
 
COPY STRUCTURE WITH CDX TO order_backup
USE order_backup
APPEND FROM order
BROWSE  
USE
 
 

И потом примари индекс проверить, т.к. он после копирования становится типа candidate.
Дальше уже мучить драйвера только остается.

Всего записей: 465 | Зарегистр. 31-08-2006 | Отправлено: 16:16 17-11-2017 | Исправлено: Zatupitel, 16:23 17-11-2017
zealotfan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем все запросы заработали. Во первых в params FDConnection нужно выставить TableType:=ttNTX и была еще нарушена целостность двух таблиц(ссылка на ID) а ID то такого уже нет

Всего записей: 234 | Зарегистр. 25-02-2016 | Отправлено: 11:09 20-11-2017
kolos32

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
C++Builder 10.2
 
Здравствуйте, возможно ли студию (билдер или делфи) подружить с WAMP? (web application messaging protocol)
 
все что перечислено здесь _http://wamp-proto.org/implementations/  
требует или/и boost выше 1.58 и стандарт С++ 11
 
буду признателен за любую мысль в этом направлении.
 

Всего записей: 5 | Зарегистр. 21-11-2017 | Отправлено: 04:48 25-11-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru