Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (до версии 2009) - часть 6

Автор: Maks150988
Дата сообщения: 21.01.2011 21:24
Подскажите компонент или модуль или заголовочник для библиотеки, где есть код сжатия/распаковки zip файлов. Мне нужен простенький код или использование, допустим, есть zip файл, я его содержимое распаковываю куда мне надо и использую из него файлы как мне надо. Желательно без VCL прибамбасов и прочей хрени, а то как скачаешь, так требуется куча pas файлов из боекомплекта ради одной функции. Глаза разбегаются качать все, не знаю с чего начать.
Автор: Frodo_Torbins
Дата сообщения: 21.01.2011 21:35
Maks150988
Если бы не ваше ярое библиотеконенавистничество, то я бы вам посоветовал TurboPower Abbrevia. А так даже и не знаю.
Автор: YuriyRR
Дата сообщения: 22.01.2011 03:00
Maks150988

Цитата:
Подскажите компонент где есть код сжатия/распаковки zip файлов

VCLZipPro45 - пользую много лет
Автор: emo
Дата сообщения: 22.01.2011 05:46
Maks150988
Смотрите TCompressionStream, TDecompressionStream в дельфи.
Пример тут.
http://www.swissdelphicenter.ch/torry/showcode.php?id=1617
Автор: Maks150988
Дата сообщения: 24.01.2011 09:29
Всем спасибо, посмотрим на досуге что там и как. Нашел на днях ZLibNoStream юнит, кажись вкусная штука, думаю то что нужно.
Автор: mcdie
Дата сообщения: 27.01.2011 12:51
Необходимо програмно отсканить документ и положить в блоб поле базы данных картинку. Может кто что посоветует.
Автор: tanaseduard
Дата сообщения: 27.01.2011 12:57
mcdie
TWAIN Development Tools
Автор: Sergey_Demchuk
Дата сообщения: 27.01.2011 14:04
Кто нибудь знает как перевести на дельфийский эту формулу из Екселя?
=ПРАВСИМВ(СУММПРОИЗВ(НЕ(ПСТР(R[-2]C;СТОЛБЕЦ(СМЕЩ(R1C1;0;0;1;ДЛСТР(R[-2]C)));1)=(ПСТР(R[-1]C;СТОЛБЕЦ(СМЕЩ(R2C1;0;0;1;ДЛСТР(R[-2]C)));1)))*1;10^(ДЛСТР(R[-2]C)-СТОЛБЕЦ(СМЕЩ(R1C1;0;0;1;ДЛСТР(R[-2]C))))

Оно вроде как переводит из HEX в двоичный вид. У меня не выходит. Должно получится скажем из
ED в двоичном 11101101
Автор: marser
Дата сообщения: 27.01.2011 14:15
Sergey_Demchuk
А чем делфийская функция HexToBin не устраивает?
Автор: Sergey_Demchuk
Дата сообщения: 27.01.2011 16:59
Я немного ошибся
Клетка А1 =ДЕС.В.ДВ(250;8) результат в клетке 11111010
Клетка А2 =ДЕС.В.ДВ(ДЕНЬ("27.11.2011");8) результат в клетке 00010111
Клетка А3 ==ПРАВСИМВ(СУММПРОИЗВ(НЕ(ПСТР(A1;СТОЛБЕЦ(СМЕЩ($A$1;0;0;1;ДЛСТР(A1)));1)=(ПСТР(A2;СТОЛБЕЦ(СМЕЩ($A$2;0;0;1;ДЛСТР(A1)));1)))*1;10^(ДЛСТР(A1)-СТОЛБЕЦ(СМЕЩ($A$1;0;0;1;ДЛСТР(A1)))))+10^ДЛСТР(A1);ДЛСТР(A1)) результат 11101101

А вот этот результат в последней клетке мне уже просто останется преобразовать в HEX, это просто. А вот эту формулу пока немогу правильно записать на паскале.


Цитата:
=ДЕС.В.ДВ(250;8)

250 это Маска XOR

Добавлено:
Смотрю что ячейка А1 дополняет выбранные целочисленные биты ячейки А2. В екселе конечно такой функции нету,
Я так понимаю, что нужно написать что то типа
11111010 XOR 00010111 и в результате должно быть 11101101
Автор: Sergey_Demchuk
Дата сообщения: 28.01.2011 00:01
Пока вот пробую таким образом
IntDay:=IntToBin(StrToInt(AktDay),8);
Maska:=IntToBin(250,8);
IntDay:=IntDay xor Maska;

Но вот операция XOR в дельфи для этогог типа переменных неприменима. Как правильнее поступить?
Автор: YuriyRR
Дата сообщения: 28.01.2011 00:20
Sergey_Demchuk

Цитата:
Но вот операция XOR в дельфи для этогог типа переменных неприменима. Как правильнее поступить?

Не надо переводить в строки до операции xor, оставь значения целыми, а после хоr уже делаешь inttobin
Автор: Sergey_Demchuk
Дата сообщения: 28.01.2011 13:47
YuriyRR
Делал так, результат неверен. Пробовал так
IntDayByte:=Str2Byte(IntDay) xor Str2Byte(Maska);
Но результат тоже не устроил.
Ну да я уже сам написал функцию вместо xor.
Вопрос теперь в другом.
Есть две даты. 01.01.1900 и 28.01.2011
Вот как бы то вычислить долю в годах второй относительно первой....в екселе есть такая функция
ДОЛЯГОДА(ДАТАЗНАЧ("01/01/1900"),"28.01.2011",1)
Получается в результате 111.227
Как в паскале что то не допер как вычислить. Функций для работы с датами море, но ни одна вроде не подходит, может пропустил какую то?
Автор: ShIvADeSt
Дата сообщения: 28.01.2011 15:57
Sergey_Demchuk

Цитата:
Вот как бы то вычислить долю в годах второй относительно первой....в екселе есть такая функция
ДОЛЯГОДА(ДАТАЗНАЧ("01/01/1900"),"28.01.2011",1)

Что такое доля в годах, если разность между 2011 и 1900, то что значит дробная часть?
Автор: YuriyRR
Дата сообщения: 28.01.2011 17:47
Sergey_Demchuk

Цитата:
Вот как бы то вычислить долю в годах второй относительно первой

в библиотеке RX есть
procedure DateDiff(Date1, Date2: TDateTime; var Days, Months, Years: Word);
Автор: Sergey_Demchuk
Дата сообщения: 28.01.2011 20:48
С реестром как лучше работать? Нужно считать данные ключа типа REG_BINARY, изменить в нем кой-что и вернуть на место.
Автор: ShIvADeSt
Дата сообщения: 29.01.2011 02:24
Sergey_Demchuk
Попробуй TRegistry (не помню есть ли в нем REG_BINARY), если нет - то чистое АПИ, на нем точно пишется/читается что угодно. Если надо будет - у меня есть куски кода (если гугль не поможет)
Автор: Sergey_Demchuk
Дата сообщения: 29.01.2011 14:37

Цитата:
Что такое доля в годах, если разность между 2011 и 1900, то что значит дробная часть?

значит что 6месяцев это 0,5 года или 111,5 если считать с 1900 года


Цитата:
TRegistry

Да, там есть, но чтобы там поменть скажем F2 на E9 (как это в самом реестре можно сделать), я так понимаю надо конвертировать то что получил с помощью TRegistry в HEX?
Автор: Frodo_Torbins
Дата сообщения: 29.01.2011 15:36
Sergey_Demchuk
Не обязательно. Если у вас данные в строке, то можно так: "str[7]:=#$E9;"
Автор: Sergey_Demchuk
Дата сообщения: 30.01.2011 11:43
А еслимне поиск надо сделать, чтобы знать где менять?
Автор: Frodo_Torbins
Дата сообщения: 30.01.2011 12:16
Sergey_Demchuk
Для этого есть функция Pos:

Код: position := Pos(#$F2, str);
if position > 0 then
str[position] := #$E9;
Автор: Sergey_Demchuk
Дата сообщения: 30.01.2011 23:30
Frodo_Torbins
Меня сбивает с толку не способ как искать, а именно как в реест внести то что мне нужно. На Inno установщике мне приходится, если значение в реестре в бинарном виде, получить значение из реестра с помощью функции RegQueryBinaryValue в строковом виде, потом переводить все в HEX, затем менять что мне нужно, потом обратно в строковый вид из HEX и прямиком в реестр,
Автор: Frodo_Torbins
Дата сообщения: 30.01.2011 23:48
Sergey_Demchuk
А зачем вам конвертация в HEX и обратно? Со строкой можно проделывать все те же операции ничего не конвертируя.
Автор: Obscenety
Дата сообщения: 31.01.2011 08:20
Привет всем. Необходимо написать прогу, выполняющую SQL скрипты из базы Oracle. Скрипты постоянные, содержатся в таблице в виде анонимных блоков. Как их оттуда запустить? Пишу на Delphi 6.0, с базами ни разу не работал.
Автор: gturk
Дата сообщения: 31.01.2011 15:09
Гденибудь можно найти мануал по DUnit на русском языке в котором будет написано что нибудь кроме "Ну впринципе там все точно также как и в JUnit поэтому особого смысла рассусоливать нету"
Автор: vlary
Дата сообщения: 31.01.2011 15:22
Obscenety Используй ADO, и можешь работать с любой базой данных. Для начала почитай здесь: Компоненты Delphi для поддержки ADO, все остальное потом найдешь сам в сети.
Автор: Obscenety
Дата сообщения: 01.02.2011 06:41
vlary, то что через ADO это понятно. Непонятно, как запускать запрос из базы? По техзаданию скрипт не должен быть включён в тело программы, необходимо иметь возможность добавления или исключения скриптов конечным пользователем без именения исходного кода. Так бы конечно написал весь запрос в TQuery и все дела. Анонимный блок это что-то типа хранимой процедуры, как я понял?
Автор: delover
Дата сообщения: 01.02.2011 07:22
Obscenety

Цитата:
Пишу на Delphi 6.0

Давайте я Вам подарю лицензию на Delphi 7.0 у меня их почему-то две. Ребята давайте потихоньку 60 забудем.
Автор: marser
Дата сообщения: 01.02.2011 07:41
Obscenety

Цитата:
Скрипты постоянные, содержатся в таблице в виде анонимных блоков.

Прочитайте SQL запросом PL-SQL блок из таблицы и выполните его, используя TADOQuery.
Автор: DokPZ
Дата сообщения: 01.02.2011 09:26
Привет всем. У меня такой вопрос:
Есть в программе классы Class1 и Class2, причем Class2 содержит массив объектов типа Class1. Теперь я хочу в процедурах Class1 использовать переменные из Class2. Как это сделать? Допустимо ли это в принципе?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

Предыдущая тема: MPO File


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.