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

» Вопросы по Delphi

Автор: SergeBS
Дата сообщения: 06.10.2005 14:27
DUMAND

Цитата:

Буду весьма признателен. Я уже думал о создании какой-нибудь простейшей базы. А какое программное обеспечение мне потребуется?

Извини за задержку - я наконец в отпуск ушел. Для начала немного побездельничал.
Но теперь примерно еженедельно проявляться буду .
Какое ПО - например Delphi . Как у Форда:"Покупайте авто любой марки - если это Форд, любого цвета - если цвет серый" .
В зависимости от версии (3-7) что-то (из связки) будет удобнее остального. Для D7 например вообще может ничего не надо, кроме самого его.
Можно и на чем-то другом, конечно. Просто я привык небольшие проекты (впрочем большие тоже) на Delphi в связке с чем-либо делать. Тут проект небоьшой - навскидку порядка 3-8 табличек. Т.е. анкетные данные - справочник заболеваний - накопительный файл истории лечения. Справочников возможно надо не 1 - или историю лечения разбить по нескольким направлениям, это сразу не скажу. Практика покажет.
Короче, на чем боьше хочется, на том можно и начать. Delphi 3,5,6,7, FoxPro 6,7 (но Фокса я недолюбливаю - больно жирные программы получаются, с минимумом функционала).
Сходу имеет смысл подумать - насколько красивые бумажки захочется печатать. Тут в зависимости от вкусов тоже масса вариантов. От ДОСявого принтера до кросстаба со всеми виндовыми наворотами, или Word/Excel типа.
Короче предложение - 14-15 октября отпиши на чем привык, 17-18 (2 вечера) я уже смогу закинуть начальный вариант. Дальше - наращивать функционал (пока не надоест и это не превратится в самоцель). Да, я упомянул только с чем чаще связывался. так что личные пристрастия тоже имеют право на жизнь.
Автор: DUMAND
Дата сообщения: 06.10.2005 19:31
SergeBS
Сначала я не понял со временем. Посмотрел профиль. Одних земель. У меня мама родилась в Киржаче. Да и я там практически вырос. Маленькая Земля....
Привычки к форматам вывода у меня вообще нет. Сам в свое время слепил по Визарду Аксесса базу, так ей и пользуюсь. Есть мысли сделать Он-лайн сервис в Инете. Вот, пожалуй, единственное пожелание. Не столько выводить на принтер, сколько оперативно обслуживать. Да! И какой-никакой интерфейс для изменений. Например, добавить или удалить или изменить какой-то параметр. Статистику с графикой не мешало бы. Если не очень я обнаглен, потом еще чего-нибудь захочется.
Да! Дельфи у меня 7.
Автор: FAngel
Дата сообщения: 07.10.2005 05:22
vserd
А зачем такие сложности ? Принцип создания SFX архива крайне прост - берется исполняемый модуль и к нему просто дописывается архив. Т.е. найти архив в нем можно просто по поиску сигнатуры архива в файле (Например : Rar! - для RAR архива и т.д. и т.п.). Как найдешь начала архива, все что до него - SFX вот и искомый размер. Но можно пойти более сложным путем - рытся в заголовке и считать размер секций, только стоит ли хотя и вполне реально ?
Автор: vserd
Дата сообщения: 07.10.2005 11:35
FAngel

Цитата:
Т.е. найти архив в нем можно просто по поиску сигнатуры архива в файл

Да оно то так. Пока так и реализовано. Просто мне нужно написать код, который пропускает SFX и извлекает архив. Архивы разных типов, правда сигнатуру я знаю. Пока это правило соблюдается,но, я боюсь, что в каком нибудь SFX-модуле встретится эта сигнатура. Вот и хочу сделать проверку что найденая сигнатура находится в не SFX(EXE)-части файла, и если таки в SFX то продолжить поиск. Задача не горит пока, но хочется сделать по уму и больше к этому не возвращаться.
Автор: FAngel
Дата сообщения: 07.10.2005 13:14
vserd
Ок. В таком случае получаем из заголовка Number of Sections и Size of headers, далее читаем из SECTION TABLE Number of Sections раз инфу по секциям, нас интерессует так называемый raw data size секции. Итого : размер ЕХЕ=Size of headers+сумма raw data size секции.
Автор: vserd
Дата сообщения: 07.10.2005 14:36
FAngel
Спасибо, поробую.
Автор: SergeBS
Дата сообщения: 12.10.2005 16:54
DUMAND
Ну на 7 и будем работать.

Цитата:

Есть мысли сделать Он-лайн сервис в Инете.

Типа страничка - кто хочет заходит и после пароля видит свою историю болезни или вводит данные о себе?
ОК. Только тогда получаем многопользовательскую систему. Т.е. у твоего провайдера понадобится поставить какой-либо легкий сервачок типа FireBird. Или заводить гостевую книгу (или типа форума) с шаблоном ввода и просмотра. Тогда - жить на сервере провайдера. Навскидку других решений пока не вижу. Но еще подумаю. Для меня это нечто новое, так что даже интересно поиграть будет в такие сервисы.
Автор: DUMAND
Дата сообщения: 12.10.2005 22:40
SergeBS
Немного другое. Чтобы программа и все остальное стояло на сервере. И запускалась из Инета. И, само собой, база, обработка... И промежуточный вариант . Программа на компе, а хранение данных на сервере. Чтобы в течении тренинга не висеть в Инете.
Автор: vserd
Дата сообщения: 13.10.2005 11:58
DUMAND

Цитата:
Немного другое. Чтобы программа и все остальное стояло на сервере. И запускалась из Инета. И, само собой, база, обработка... И промежуточный вариант . Программа на компе, а хранение данных на сервере. Чтобы в течении тренинга не висеть в Инете.

Только не забывай что во всем мире мед инфа считается конфиденциальной, а так со временем, ты можешь накопить некую базу которая взлом сервера на которм она размещена будет проплачен. Так что лучше пускай тебе присылают результаты, а ты их будешь добавлять в свою базу на локальном компе. Для провайдеров наиболее типичным является MySQL, который не поддерживает транзакций. Для получения инфы от сервера это подходит, но для добавления или изменения нет.

Ты должен определиться чего ты хочешь, в противном случае, ты будешь бегать от варианта к варианту, а прога будет напоминать винигрет.
Если очень серьезная заявка в конце, попробуй определить этапы, которые можно будет выполнять в рамках общей цели. И самое главное определись что ты хочешь получать в отчетах. Потому что иногда отчеты очень существенно меняют первоначальную базу, а ее перекрой очень болезненое и довольно дорогое "удовольствие".
общее правило таково: внесение изменений после выполения 20-30% проекта стоит на порядок дороже чем в начале, а после 50% еще больше.
Автор: DUMAND
Дата сообщения: 13.10.2005 20:48
vserd

Цитата:
Только не забывай что во всем мире мед инфа считается конфиденциальной, а так со временем, ты можешь накопить некую базу которая взлом сервера на которм она размещена будет проплачен. Так что лучше пускай тебе присылают результаты, а ты их будешь добавлять в свою базу на локальном компе. Для провайдеров наиболее типичным является MySQL, который не поддерживает транзакций. Для получения инфы от сервера это подходит, но для добавления или изменения нет.


У провайдера есть еще PostgreSQL. Может это лучше и функциональнее?
А вообще совет понял и уже согласен.


Цитата:
Ты должен определиться чего ты хочешь, в противном случае, ты будешь бегать от варианта к варианту, а прога будет напоминать винигрет.
Если очень серьезная заявка в конце, попробуй определить этапы, которые можно будет выполнять в рамках общей цели.

Если можно, поясните. Пример какой-нибудь.


Цитата:
И самое главное определись что ты хочешь получать в отчетах. Потому что иногда отчеты очень существенно меняют первоначальную базу, а ее перекрой очень болезненое и довольно дорогое "удовольствие".

Отчет это что? Не приходилось видеть. Можно пример. Тогда легче разобраться.

Спасибо за серьезное отношение к моим проблемам.

Автор: SergeBS
Дата сообщения: 14.10.2005 12:13
vserd
Не пугай человека. Дока на 5.0 версию:

Цитата:

6.7. Команды управления транзакциями и блокировками в MySQL
6.7.1. Синтаксис команд BEGIN/COMMIT/ROLLBACK
6.7.2. Синтаксис команд LOCK TABLES/UNLOCK TABLES
6.7.3. Синтаксис команды SET TRANSACTION

И по мне mySQL - самое оно. Не заводить же linux специально для postgreSQL.
mySQL за последний год раза в 2 растолстел по дистрибутиву, а по функционалу 5.04 и 3.24 (про которую видимо вспоминаешь) - небо и земля. Успешно догоняет MS SQL и FireBird, причем кое-где удобнее ЖарПтицы.

DUMAND
Кто-то кого-то не понял . Программа тренинга и данные о прогрессе - две большие разницы. Они могут быть совершенно не связаны. А могут быть и "Два в одном".
По любому надо авторизованный доступ организовывать и соответственно закрыться от SQL-injection, которую так любят кулхацкеры. Но это все достаточно просто. Немного проадминить базу и все.

Насчет отчетов - не ломай голову. Какая инфа есть в базе - такая в отчет и попадет в любом порядке, какой захочется. Структура базы определяется из взаимоотношений сущностей пациент-болезнь-методы лечения-результаты (во временном срезе). Пока все. Короче, не все в базах данных так страшно . Иначе бы я этим не занимался.
Надо просто составить список, что надо хранить (короткие термины, обозначающие сущности) и отследить их связь. Думаю, ко вторнику уже составлю и даже что-либо настрогаю. Не в первый раз.

Насчет конфиденциальности: так и это не впервой. Хуже того. Я навскидку даже не вспомню БД без конфиденциальной информации (из тех, с которыми работаю). Нет, одна есть: "Консультант-плюс" И то не вся. Обл. приказы - есть и ДСП.

Главный вопрос прежний - параллельность работы. 2 варианта:
1 Доступ "по одному". Что не означает "долго". Можно ведь вначале вбить инфу, а потом кнопкой "Послать" запустить сеанс связи и все пердать. Читать можно когда угодно. Но передает - один, остальные ждут.
2 кто когда хочет, тогда и передает.
Я считаю, что надо иметь 2. Значит - работа с mySQL. Если нет возражений или других предложений, конечно.
Автор: LordMAD
Дата сообщения: 14.10.2005 12:20
Есть у кого упешный практический опыт сохранения из clipboard в формате CF_DIBV5 в файл?
Автор: STEEL
Дата сообщения: 15.10.2005 09:46
Приветствую! А не подскажите ли... как передать фокус другому приложению? Моё запускается и прячется в трей, но дык факус как бы на нём остаётся! :|
Передать любому другому приложению, либо конкретному (знаю handle)
Автор: STEEL
Дата сообщения: 16.10.2005 13:37
Подскажите, как с каждой вставкой переводить курсор на новую строку?

Код:
procedure LogFileStream(s, filename: string);
begin
with TFileStream.Create(filename,fmOpenWrite+fmShareDenyNone) do
try
Seek(0,soFromEnd);
write(pointer(s)^,length(s));

finally
free;
end;
end;
Автор: dartvaider
Дата сообщения: 16.10.2005 14:11
Ворврос такой:
я подключаюсь с Delphi к *.mdb файлу через ADO с использованием провайдера Mocrosoft jet 4.0 ole db provider
, а в *.mdb файле делаю связь с таблицами (c файлом *.txt)

После того, как я пыполню связь Access с внешним txt файлом,то содержимое этого текстового файла отображается коректно, но при добавлении записей Access :

Обновление данных в присоединенной (или связанной) таблице не поддерживается данным драйвером ISAM. (Ошибка 3616)
Используемый устанавливаемый драйвер ISAM не поддерживает обновление записей во внешних таблицах. Однако разрешается добавление записей.

Может следует поменять Mocrosoft jet 4.0 ole db provider на какой либо другой, или же соединяться с внешним txt файлом не через Access, а через какой нибуть провайдер!?
Автор: ShIvADeSt
Дата сообщения: 17.10.2005 00:53
STEEL

Цитата:
Передать любому другому приложению, либо конкретному (знаю handle)

SetForegroundWindow (причем либо обычный вызов функции, но есть вариант, что в 9х и выше будет просто мерцать, тогда надо будет использовать взломанный вариант, тогда не будет мерцания)

Цитата:
Подскажите, как с каждой вставкой переводить курсор на новую строку?

В связи с тем. что не понятно какие данные у тебя пишутся, то предлагаю записывать символ перевода каретки (какой не могу сказать, так как не помню, но его легко получить) либо вместо Write испольщовать writeln, но тогда забудь про seek. Хотя наверное в стримах writeln не сработает.
Автор: CAD_tester
Дата сообщения: 17.10.2005 07:47
Уважаемые, подскажите!
Мне сказали,что у вас проскакивали ссылки по SDK на PhotoShop, может кто ткнет носомт или в ПМ, только если можно ссылки не с официального сайта, а то там надо региться!
Заранее спасибо!
Автор: Larry
Дата сообщения: 17.10.2005 18:32
CAD_tester, а причем здесь "Вопросы по Delphi"?
Автор: STEEL
Дата сообщения: 18.10.2005 20:14
ShIvADeSt
Работал с TFileStream, обычный текстовый файлик.
s:=#10#13+s;

Я по старинке '/n' вставить пытался )
Автор: ExExibit
Дата сообщения: 19.10.2005 15:31
Народ! кто знает как определить активность порта,т.е. узнать через него качают или нет?
Автор: STEEL
Дата сообщения: 19.10.2005 17:49
У меня программка, задача которой сидеть в трее и по нажатию на горячую кнопку убить и следом запустить приложение.
Но видать алгоритм не совсем правильный и при нажатии нескольких раз подрят на горячую кнопку (регистрирую в системе сочетание клавиш, а потом отслеживаю их), программка моя просто падаёт.
Хочу выставить какой-нибудь таймаут между нажатием на кнопку. Пускай будет 30 сек.
Автор: Larry
Дата сообщения: 19.10.2005 17:50
Подскажите, можно ли с помощью Delphi отобразить окно поверх других приложений (даже приложений, использующих для запуска библиотеки DirectX)?
Автор: ShIvADeSt
Дата сообщения: 20.10.2005 00:46
STEEL
Ну и в чем проблема?
if NOT Flag then begin
Flag:=True;
создаешь таймер
end;
if Flag then // нам все пофигу

в таймере (интервал секунда или 10 сек по барабану, главное условие)
Inc(i) // i глобальная
if i=30 (3) then begin Flag:=False;
KillTimer ( ) // Timer1.Enabled:=False; по желанию
end;
А вообще дай кусок программы, посмотрим из-за чего она падает, возможно память не освобождаешь.
Автор: CAD_tester
Дата сообщения: 20.10.2005 12:19
Larry

Цитата:
CAD_tester, а причем здесь "Вопросы по Delphi"?

Ну как причем! SDK для Photoshopa на Delphi с примерами!
Автор: xMesSir
Дата сообщения: 20.10.2005 15:18
CAD_tester
В третьем топике нахожу этот твой вопрос!
Тебя в топике http://forum.ru-board.com/topic.cgi?forum=35&topic=26514&start=1600 уже ждет ответ на него.
Автор: vserd
Дата сообщения: 20.10.2005 17:48
CAD_tester

Цитата:
Ну как причем! SDK для Photoshopa на Delphi с примерами!

А вы оптимист :)))
Если рабочим языком Adobe является C++ то чтобы были примеры на Delphi это очень нужно постараться.
Автор: Pinocchio
Дата сообщения: 21.10.2005 14:25
Для Delphi .NET, чтобы DesignSize не писалса в файл nfm надо не вычислять метод DefinePropertys от более глубокого инхеритета, а просто филеру присваивать анксенсором себя, а после востанавливать. Тогда она думает что сравнивает с визуально наследованным (например TTabSheet), а так как сравнение даёт идентично, то она и не пишет в форму. Во загнул
Автор: STEEL
Дата сообщения: 22.10.2005 10:07
ShIvADeSt
Вообщем нужен алгоритм наверно посовременней, я убиваю процесс кривовасто, имхо:

Убиваем процесс по имени

Код:
function GetAllProcesses: Boolean;
Type
TEnumProcesses = Function (lpidProcess: LPDWORD; cb: DWORD; Var cbNeeded: DWORD): BOOL Stdcall;
TEnumProcessModules = Function (hProcess: THandle; lphModule: LPDWORD; cb: DWORD; Var lpcbNeeded: DWORD): BOOL Stdcall;
TGetModuleFileNameExA = Function (hProcess: THandle; HMODULE: HMODULE; lpFileName: PAnsiChar; nSize: DWORD): DWORD Stdcall;
Var
EnumProcesses : TEnumProcesses;
EnumProcessModules : TEnumProcessModules;
GetModuleFileNameExA: TGetModuleFileNameExA;
hPSAPI : THandle;
Counter, Counter1 : LongWord;
PIDs : Array[0..1023] Of DWORD;
pbNeeded : DWORD;
ProcHandle : THandle;
ModHndls : Array[0..1023] Of DWORD;
mbNeeded : DWORD;
ModulePath : String;
withcharsub: integer;
uiExitCode : UINT;

begin

uiExitCode := 0;
Result := False;
hPSAPI := LoadLibrary('PSAPI.dll');
If hPSAPI < 32
Then // oa ioeaea
Begin
Result := False;
Exit;
End;
EnumProcesses := GetProcAddress(hPSAPI, 'EnumProcesses');
EnumProcessModules := GetProcAddress(hPSAPI, 'EnumProcessModules');
GetModuleFileNameExA := GetProcAddress(hPSAPI, 'GetModuleFileNameExA');
EnumProcesses(@PIDs, Length(PIDs), pbNeeded);
For Counter := 0 To (pbNeeded ) - 1 Do
Begin
ProcHandle := OpenProcess({PROCESS_QUERY_INFORMATION + {PROCESS_VM_READ+}PROCESS_ALL_ACCESS, False, PIDs[Counter]);
If ProcHandle <> 0
Then Begin
If EnumProcessModules(ProcHandle, @ModHndls, Length(ModHndls), mbNeeded)
Then For Counter1 := 0 To (mbNeeded Div 4) - 1
Do Begin
SetLength(ModulePath, MAX_PATH);
GetModuleFileNameExA(ProcHandle, ModHndls[Counter1], PChar(ModulePath), MAX_PATH);
withcharsub:=Pos(ansilowercase(Process_k), ansilowercase(ModulePath));
if withcharsub<>0
then begin
// Form1.memo1.Lines.add(inttostr(withcharsub)+' oaiae='+inttostr(ProcHandle)+' '+AnsiLowerCase(ModulePath));
// GetExitCodeProcess(PIDs[Counter],uiExitCode);
TERMINATEPROCESS(ProcHandle,uiExitCode);
// frmMain.GLastError;;
end;

End;
// terminateprocess
CloseHandle(ProcHandle);
end;
If Result Then break;
end;
FreeLibrary(hPSAPI);
end;

procedure ReLoadProccess();
begin
GetAllProcesses;
LoadProccess(Path);
end;


Автор: iskatrina
Дата сообщения: 22.10.2005 12:27
Извените , пожалуйста....Сделала проект квартиры в 3д макс и теперь хочу сделать свободный ее просмотр, если конечно возможно, т. е. как в игрушках ходить по ней с помощью стрелок и мышки. Я так понимаю это надо запрограммировать..(?). Возможно ли это на делфи? или на каком?
Заранее спасибо!
Автор: STEEL
Дата сообщения: 23.10.2005 21:09
Как EXEшник прикрепить как ресурс в проект свой?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


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