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

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

Автор: Frodo_Torbins
Дата сообщения: 16.06.2009 16:48
delover
Можно покилять хендлы через Process Explorer. Должно сработать.
gvidon2009
Говорят можно Lazarus + KOL-CE использовать.
staich
Дамп памяти сделать несложно, для этого есть куча прог. А вот разобратся в работе чужой проги довольно сложно даже владея в совершенстве OllyDbg.
Автор: Xaoc666
Дата сообщения: 16.06.2009 17:43
V1s1ter
Установил, собрал, создал тестовый проект, положил пару компонент, откомпилил, запустил, ткнул несколько раз, закрыл дальфю, открыл дельфю, открыл тестовый проект, откомпилил, запустил, закрыл дельфю, открыл дельфю, удалил пакет из IDE, закрыл дельфю, открыл дельфю, собрал, установил, запустил тестовый проект...
Никаких ошибок, все отстроилось, все удалилось. Delphi7 Lite v7.3.2.3 build 8.1.
Поэтому и сижу на семерке, не рыпаюсь...
Автор: V1s1ter
Дата сообщения: 16.06.2009 17:53
Xaoc666
Спасибо.
Если судитьпо нику, у Вас должно стоять хотябы CodeGear RAD Studio 2010 (Weaver)14.0.3449.21988.2
Автор: ShIvADeSt
Дата сообщения: 17.06.2009 00:59
brookson

Цитата:
Расписание. Запись клиента ведётся в таблицу, где есть:
- дата
- время начала
- время окончания
- к_кому_записан
- в какой кабинет записан

- фио клиента, телефон и т.д.
Кому-нибудь доводилось такое реализовывать?

В чем конкретно сложности? Обычная БД, ничего сверхъестественного. Несколько дочерних таблиц плюс основная. Если тебе надо готовое решение - то вряд ли у кого было точно такое же, хотя подобная база пишется за день максимум (если у заказчика есть готовый интерфейс вернее его представление).
delover

Цитата:
Подскажите пожалуйста, а есть ли таеок средство, чтобы когда я пишу dll эксперт для дельфи, чтобы мне было пофиг сколько раз было LoadLibrary? Пофиг сколько процессов это делало. Просто я сказал унлоад и делете файл. Можно ли так сделать и есть ли кардинальные средства? Експерты тема интересная, хотелось бы попробовать в реал-тайм.

Unlocker это умеет делать. Плюс у меня где то валяются исходники модулей которые могут делать выгрузку библиотеки из памяти процессов. Если Unlocker не пойдет - то поищу.
Автор: dr1v3
Дата сообщения: 17.06.2009 16:20
Возникла задача оптимизировать массив. Есть определенного размера массив данных типа Integer, нужно найти одинаковые значения элементов, сложить их и удалить дубликаты. Как это сделать наиболее эффективно?
Пример:
массив - 2 3 4 3
нужно - 2 6 4
Порядок значения не имеет.

Просто записей в массиве очень много, моя реализация выполняется очень долго и со сбоями. Хочу узнать ваши мнения.
Автор: Xaoc666
Дата сообщения: 17.06.2009 19:27
dr1v3
Задача непонятна. Во-первых для оптимизации нужно четко представлять сферу применения кода, чтобы установить ограничения.. Каков разброс значений? Каков средний размер массива? Как часто выполняется эта процедура? Чем можно пренебречь - памятью, точностью? И вообще, может этого делать не надо, а копать нужно в другом месте?

Во-вторых не совсем понятно, что значит
Цитата:
и удалить дубликаты
. Если это массив, а не список, то удалить его элементы - это либо выделение памяти нового размера, либо установка неких флагов "удаленный элемент". Какой из способов нужен?
Автор: dr1v3
Дата сообщения: 17.06.2009 20:00
Скажем, есть некий StringGrid с полями: имя, код, сумма. Что бы было понятнее обьясню на примере.

Вася 10 50.00
Петя 11 30.00
Женя 12 20.00
Володя13 10.00
Вася 10 40.00
Володя13 90.00
Петя 11 80.00

Таблицу нужно привести к виду
Вася 10 90.00
Петя 11 110.00
Женя 12 20.00
Володя13 100.00

Таких строк в таблице ~50 000. Вот тут как раз важна точность, память не критична, скорость выполнения важнее. Для удаления строк есть своя функция вида

Код: with SG do begin
if (RowToDelete>=0) and (RowToDelete<RowCount) then begin
for i:=RowToDelete to RowCount-2 do
Rows[i].Assign(Rows[i+1]);
RowCount:= RowCount-1;
end;
end;
Автор: Figaro2000
Дата сообщения: 17.06.2009 20:17
dr1v3
лично я реализовывал бы через in-memory dataset (kbmMemTable) -
1. создается таблица нужной структуры, нужные индексы для сортировки
2. добавляются записи из источника
3. в результате - таблица (dataset), который потом можно крутить как угодно - ввод и корректировка, расчет, аналитика, отчеты, графика. То, что ты показал в примере - простейший отчет с группировкой
50000 записей для kbmMemTable - мелочь, доводилось обрабатывать и бОльшие объемы,
скорострельность очень приличная.
Чем не устраивает?
Автор: dr1v3
Дата сообщения: 17.06.2009 21:38
А можно более "велосипедным" способом, за рамки StringGrid не охота выходить?
Автор: ShIvADeSt
Дата сообщения: 18.06.2009 01:00
dr1v3

Цитата:
А можно более "велосипедным" способом, за рамки StringGrid не охота выходить?

Судя по всему у тебя каждому имени соотв код. Тогда делай массив записей вида
myRec = record
Num:integer;
Name : string[20];
Sum: real;
end;
myArr : array[1..50000] of MyRec;

загоняешь туда все записи из стрингрида, сортируешь хоть пузырьком хоть чем Num в порядке возрастания, а потом уже загоняешь в гриду при этом пока подряд идут одинаковые Num то суммируем Sum, иначе записываем итоговую сумму в гриду.
ЗЫ. при помощи SQL это решается одной строкой и менее секундой длительности
Автор: Figaro2000
Дата сообщения: 18.06.2009 06:24
dr1v3
ShIvADeSt

Цитата:
ЗЫ. при помощи SQL это решается одной строкой и менее секундой длительности

оть и я про то же - не тем микроскопом гвозди забиваются, типичная БД-задача
Автор: dr1v3
Дата сообщения: 18.06.2009 07:06
ShIvADeSt: Спасибо, так и сделаю. Я планировал всё это дело в SQLite загнать, но это надо весь код перелопачивать, а прога нужна уже и сейчас. После переделаю.
Автор: RS85
Дата сообщения: 18.06.2009 10:26
Подскажите, какой-то странный глюк.
У меня Delphi 2007.

Если я например, в какой-то процедуре или функции вставляю блок обработки исключений try
......
except

end;

то после этой вставки, у меня в среде IDE начинаются странности. Например, если подвести курсор к процедуре, объекту и т. д., например TS.Free, то среда разработки не показывает всплывающее окошко, где написана вся иерархия объекта, или все свойства или методы, которые у него есть, а всплывает пусто окошко.

До блока
try
except

все нормально... Почему так может происходить?
Автор: dr1v3
Дата сообщения: 18.06.2009 16:08

Почему?
Возникает при StrToInt(StringName);
Автор: f3ka
Дата сообщения: 18.06.2009 16:10
dr1v3
а какого максимальное значение INT? возможно StrToInt64 поможет...
Автор: dr1v3
Дата сообщения: 18.06.2009 16:32
f3ka
Помогло
Автор: delover
Дата сообщения: 19.06.2009 08:17
Frodo_Torbins
ShIvADeSt
Спасибо, это помогает хотябы только один раз перегружать Дельфи. Я так подумал, что если рвать все интерфейсы жёстко, то потом всё равно будет сложно работать - лучше перегрузить. Я попробовал делать немного иначе и накидал демку. Если не сложно - гляньте пожалуйста. Извините там просто пара кнопок в общем...
http_//ifolder.ru/12715398

ShIvADeSt
Унлокер я скачал, вот исходники тоже было бы интересно взглянуть.
Автор: delover
Дата сообщения: 20.06.2009 09:36
Первое впечатление после работы с этим, что такой проблемы никогда не существовало. )
Автор: Aleksandr N
Дата сообщения: 20.06.2009 18:37
Подскажите как конвертировать Flash ролик в формат RTF.
Автор: spasius
Дата сообщения: 20.06.2009 19:02
Aleksandr N
может просто вставить? а не конвертировать. в плане сохранненых данных это выглядит как обычное бинарное вложение. /code /code ...
Автор: Michael007Pro
Дата сообщения: 20.06.2009 19:49
Не знаю можно-ли сюда писать подобные просьбы, но напишу. Сорри, если что.
Помогите с написанием простейшей программы на делфи: конвертер валют(из рублей в долары, и обратно, и из рублей в евро, и обратно), а также запрет ввода букв вместо цифр.
Друг попросил, очень надо. Сам особо не шарит. Нужно до завтрашнего вечера.
Ps ещё раз извините, если не сюда обратился.
Ps2^ В гугле ничо не нашёл.
Ps3 Если что, постучите в аську или в личку напишите.
Автор: Kursist
Дата сообщения: 20.06.2009 20:25
Запреты на ввод букв вместо цифр я люблю!
У едита есть событие KeyPress в него пишешь:

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ;
// '.',',':Key:=DecimalSeparator;
#8: ;
#13: ;
else Key:=Chr(0);
end;
end;

Если нужно разрешить ввод числа с запятой - убери комент на DecimalSeparator. Кстати, этот код подставляет автоматически меняет , . на правильный символ.

Такой конвертор - элементарно:
В один едит вводишь значение, это значение умножаешь на коеффициент и выводишь куда надо (например в другой едит).
Всё!

Можешь написать мультивалютный конвертер:
В один едит вводишь курс валюты, в другой вводишь сумму (в тугриках), в третий едит выводишь произведение суммы на курс.
Автор: Aleksandr N
Дата сообщения: 20.06.2009 20:44
spasius
Ну в данном случае это не подходит. Мне нужно из N-ного редактора с Flash роликом сохранить данные в RTF файл. Т.е. нужна перекодировка или нечто подобное.
Автор: Michael007Pro
Дата сообщения: 20.06.2009 22:11
Kursist
Спасибо. Но ему хорошо бы, чтобы уже готовая прога была. Думаю он врядле что разберёт из твоего написанного).
Автор: Frodo_Torbins
Дата сообщения: 20.06.2009 22:35
Michael007Pro
А гугл совсем уже ничего не выдает? Или этот вариант чем то не подходит? А вообще такие вещи за деньги делаются.
Автор: Kursist
Дата сообщения: 20.06.2009 23:23
Michael007Pro
Ну, если он не может разобраться даже в моем коде, а ему надо дешево, надежно и сердито, тогда ему прямой путь к обычному калькулятору. Чем плох такой вариант? Но это уже не относится к теме - "Вопросы по Дельфи"!!! как и вообще к вопросам по программированию!
Автор: Aquest
Дата сообщения: 22.06.2009 12:21
Проблема:
есть диск,на котором находится множество файлов.
Нужно через форму Delphi просматривать содержимое диска, выделить необходимые файлы и считать их имена(для дальнейшего помещения в БД).
Вопрос: какие компоненты, функции и.т.д. для этого использовать.
Автор: f3ka
Дата сообщения: 22.06.2009 12:32
Aquest
компонент TOpenDialog
а дальше F1
Автор: SIgor33
Дата сообщения: 22.06.2009 15:01
Aquest
TFileListBox и его наследники
Автор: volser
Дата сообщения: 22.06.2009 15:29
Aquest
можно еще использовать компонент TShellListView с закладки Samples, не нужно открывать отдельный диалог

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


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