Вопрос № 121062: Эксперты, здравствуйте!
Необходима Ваша помощь, нужно решить вот эту задачку «Вводится строка S. Зашифровать строку s по таблице». ...Вопрос № 121084: Нигде не могу найти, как можно открыть Htm-файл с закладками через внешний просмотровщик, установленный по умолчанию?
Например:
ShellExecute(Handle,'open',pChar('c:primer.htm#sakladka'),nil,nil,SW_SHOW) не работает в 7 Internet Explorer или...Вопрос № 121139: Здравствуйте уважаемые эксперты!
У меня такой вопрос: Пишу программу для работы с базами данных. Сервер FireBird.
Программа имеет MDI интерфейс. некоторые редко вызываемы окна будут вызываться из
dll-файлов. Если в вызываемой форме есть т...Вопрос № 121156: Вопрос такого плана!
// Создаём переменную и выделяем блок памяти:
var
P: Pointer;
begin
GetMem(P, 10 * SizeOf(Integer));
// ...
// Освобождаем либо так:
FreeMem(P, 10 * SizeOf(Integer));
// Либо как это дела...Вопрос № 121161: Здравствуйте господа эксперты. У меня есть пара вопросов, которые меня давно уже мучают, но ответов не нахожу:
1. При использовании функции Windows.AnimateWindow с флагом blend на появление формы не прорисовываются некоторые компоненты (кнопки, в...Вопрос № 121174: Вопрос такой!
Есть блок памяти. Указатель на начало блока хранится в переменной P
P: Pointer;Нужно разименовать этот блок как массив Integer'ов.
Делаю так
type
PArray = ^TArray;
TArray = array [0..MaxInt div SizeOf(Integer) ...
Вопрос № 121.062
Эксперты, здравствуйте!
Необходима Ваша помощь, нужно решить вот эту задачку «Вводится строка S. Зашифровать строку s по таблице».
Отвечает: Esi
Здравствуйте, Alena De Lon!
Чтобы решить Вашу задачу нужно:
1) открыть таблицу (dbf-файл, или таблица БД - этого не указано в вопросе).
2) организовать цикл выделению одного символа из строки S.
3) поиск этого символа в таблице (например table1).
4) записать полученный знак в новую строкуй (например S1).
Удачи!
Приложение:
Ответ отправил: Esi (статус: 3-ий класс)
Ответ отправлен: 31.01.2008, 18:37 Оценка за ответ: 5
Вопрос № 121.084
Нигде не могу найти, как можно открыть Htm-файл с закладками через внешний просмотровщик, установленный по умолчанию?
Например:
ShellExecute(Handle,'open',pChar('c:primer.htm#sakladka'),nil,nil,SW_SHOW) не работает в 7 Internet Explorer или в Mozilla Firefox.
Возникает ошибка ERROR_FILE_NOT_FOUND. Можно ли открыть закладку 'sakladka' в файле c:primer.htm?
Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Царев Олег Владимирович!
Напрямую, по-моему, это сделать не удастся - нужно браузеру в параметрах командной строки передать путь к файлу вида file:///C:/primer.html#sakladka.
Предлагаю следующее решение:
1. в реестре находим, какое приложение должно открывать указанный тип файлов.
2. запускаем это приложение с параметром путь к файлу.
Проверил на IE и Firefox.
Удачи!
Приложение:
Ответ отправил: Николай Владимирович / Н.В. (статус: Специалист)
Ответ отправлен: 31.01.2008, 22:02 Оценка за ответ: 5
Вопрос № 121.139
Здравствуйте уважаемые эксперты!
У меня такой вопрос: Пишу программу для работы с базами данных. Сервер FireBird.
Программа имеет MDI интерфейс. некоторые редко вызываемы окна будут вызываться из
dll-файлов. Если в вызываемой форме есть таблица, как мне нужно сделать передать как параметр
сам DataBase или достаточно объявить в разделе uses глобальный Data-модуль в котором лежит TpFIBDatabase?
Отвечает: BlackRaider
Здравствуйте, Дадаев Заур Мусаевич!
Не совсем так.
вот реализация формы в DLL в приложении.
т.е. процедура которая вызывается из DLL как раз и открывает саму форму. в вашем примере я не понял каким образом она загружается из ДЛЛ?
Параметр fHw -передается для того чтоб форма принадлежала тому же приложению.
ADO это сам адоконнекшен. т.е. практически что и IBConnect.
Ниже вызов данной формы из ДЛЛ.
Приложение:
Ответ отправил: BlackRaider (статус: 2-ой класс)
Ответ отправлен: 01.02.2008, 09:17 Оценка за ответ: 3 Комментарий оценки: В моем примере помоему не трудно догадаться, что форму открывает та процедура которую я привел в примере.
То что я показал и что Вы мне далт практически одно и тоже > метод один!
Отвечает: Selya
Здравствуйте, Дадаев Заур Мусаевич!
В dll Database передавать нельзя. В лучшем случае можно передать строку (лучше PChar) с алиасом или путём к базе данных на диске.
Ответ отправил: Selya (статус: 5-ый класс)
Ответ отправлен: 01.02.2008, 10:40 Оценка за ответ: 3 Комментарий оценки: Как понять нельзя? не рекомендуется или это невозможно (в моем примере я это сделал)
Вопрос № 121.156
Вопрос такого плана!
// Создаём переменную и выделяем блок памяти:
var
P: Pointer;
begin
GetMem(P, 10 * SizeOf(Integer));
// ...
// Освобождаем либо так:
FreeMem(P, 10 * SizeOf(Integer));
// Либо как это делают C++'ники
FreeMem(P);
end;
Теперь вопрос! Как ОС во втором случае знает, что нужно освободить именно 10 * SizeOf(Integer) байтов памяти, а не 1 байт или не 4 байта!
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Игнатьев Максим Викторович!
Этим занимается не ОС, а менеджер памяти Delphi.
Менеджер (в упрощенном виде) работает так:
1) при запросе выделить память (GetMem) запрашивает у ОС выделить приложениюпамять размером кратным 4к, но не менее запрошенного
2) записывает во внуетренней структуре соответствие указателя на выделенный блок памяти, его размер и некоторую служебную информацию
3) возвращает указатель
4) при вызове FreeMem менеджер памяти находит по указателю необходимые данные о пямяти и овобюождает ее.
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 10-ый класс)
Ответ отправлен: 01.02.2008, 10:34 Оценка за ответ: 5
Отвечает: Selya
Здравствуйте, Игнатьев Максим Викторович!
Цитата из "Delphi 5. Руководство разработчика" (С.Текстейра и К.Пачеко):
Таблица 2.6. Функции выделения и освобождения памяти
Функция выделения памяти Функция освобождения памяти
AllocMem() FreeMem()
GlobalAlloc() GlobalFree()
GetMem() FreeMem()
New() Dispose()
StrAlloc() StrDispose()
StrNew() StrDispose()
VirtualAlloc() VirtualFree()
И собственно ответ. Какая разница. Просто прими это как должное. А если серьёзно, то компилятор при создании переменной и выделении преременной памяти (GetMem) запоминает её размер.
Ответ отправил: Selya (статус: 5-ый класс)
Ответ отправлен: 01.02.2008, 10:36 Оценка за ответ: 5
Вопрос № 121.161
Здравствуйте господа эксперты. У меня есть пара вопросов, которые меня давно уже мучают, но ответов не нахожу:
1. При использовании функции Windows.AnimateWindow с флагом blend на появление формы не прорисовываются некоторые компоненты (кнопки, в редакторах текста нет), кто - нибудь с этим боролся успешно?
2. С помощью каком проги можно наиболее полно просмотреть файлы dcu.
Отправлен: 01.02.2008, 11:09
Вопрос задал: Genia007 (статус: 5-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
2. DCU - Delphi Compiled Unit - предкомпилированный pas, из них собирается exe-шник. Просматривать их не к чему. Предполагаю, что у вас какой то коммерческий компонент с .dcu и без .pas, и в них вы что-то хотите посмотреть. Ничего там не увидите.
Ответ отправил: Selya (статус: 5-ый класс)
Ответ отправлен: 01.02.2008, 11:50 Оценка за ответ: 4 Комментарий оценки: 1. Не хочет работать, кроме того ещё и меняет цвет формы.
2. Чо такое файлы dcu я знаю, и мне действительно нужно посмотреть dcu файлы коммерческих компонентов, с которыми не шли pas, ну очень нужно разобраться с их кодом.
Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Genia007!
DCU, как уже правильно ответили, это откомпилированный модуль Delphi.
Посмотреть его в виде кода никак не получится.
Конечно, возможность взлома dcu. Точнее даже не взлома, а корректирования в нем каких-либо частей. Не буду описывать как это делается, т.к. Вы хотите изменить чей-то чужой коммерческий компонент, который не распространяется в исходных кодах - а это будет нарушение лицензии.
Вообще, dcu можно сравнить в программами (exe): из откомпилированной программы нельзя получить исходники на delphi (ну только если некоторое подобие, которое реально все равно использовать не получится) - только ассемблерный код. В лицензионном соглашении большинства программ, распространяющих только в виде exe, сказано что их запрещается декомпилировать и т.п. Аналогично dcu - их изменение будет нарушением лицензии.
Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Специалист)
Ответ отправлен: 01.02.2008, 17:03 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ. Менять в коде я не чего не собираюсь, просто мне нужно разобраться как он работает, или хотя бы узнать процедуры, которые использовались при его написании, чисто профессиональный интерес.
Вопрос № 121.174
Вопрос такой!
Есть блок памяти. Указатель на начало блока хранится в переменной P
P: Pointer;Нужно разименовать этот блок как массив Integer'ов.
Делаю так
type
PArray = ^TArray;
TArray = array [0..MaxInt div SizeOf(Integer) - 1] of Integer;
далее
PArray(P)^[I] := Value;
Но если у меня значений больше, чем MaxInt div SizeOf(Integer), то фсё!
Ругается!!!
Порылся в инете и увидел такую инструкцию:
PArray = ^TArray;
TArray = array [0..0] of Integer;
и т.д.
Говорят у них всё работает. А у меня...????
Отвечает: Selya
Здравствуйте, Игнатьев Максим Викторович!
перед использованием TArray = array [0..0] of Integer;
отключайте проверку диапазона {$R-}
не забудьте в конце восстановить {$R+}
Ответ отправил: Selya (статус: 5-ый класс)
Ответ отправлен: 01.02.2008, 14:22