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

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

Модерирует : ShIvADeSt

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

delover

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

Цитата:
Да все устраивает, мы что тут - спорим? Предмета спора я не вижу. Я сам компилировал большой банковский проект с "Build with runtime packages", ибо один раз инсталлируется на компьютер, записываются BPL, а потом через интернет проект постоянно обновляется - просто заменой маленького EXE и маленьких BPL. Экономится трафик, время и нервы. А для утилит и всякого "мелкого" одноразового софта любые дополнительные библиотеки - зло.

+1
Сиё основное, и бесспорно. Были выше рассуждения про целеобразность BPL, с радостью процитировал, так как лучше не скажешь.
 

Цитата:
Цитата:Но идёт жизнь, мои стандартные программули пользую только я сам, а компа где нет vcl60.bpl я не встречал.  
Я встречал. Поверь - их очень много

Мы тут не  спорим. Прочитай внимательно, но я поясню про какие компьютеры говорю. Я имею ввиду компьютеры с которыми сам реально имею дело. Это мой рабочий компьютер и мой домашний. На компы сослуживцев не лезу - дело администратора.  Когда помогаю знакомым - им нужно установить Файн Райдер, это далеко не мои маленькие проги. Поверь о великий учитель я тоже предполагаю, что такие компьютеры есть. Давай отделим мух от котлет. Те компьютеры которые без BPL по жизни нуждаются в твоих программах? Ты эту галочку не используешь потому, что хочешь обязательно установить свою прогу куда ни попадя? Или ты всё таки слышал такое слово ЗАКАЗЧИК?
 

Цитата:
Цитата:Да буде известно что BPL - это DLL с расширенным специфическим ресурсом.  
 
О, великий, поучите меня создавать BPL  

Я делал BPL которым не нужно даже VCL/RTL и они были взаимосвязаны. Это ничем не отличается от DLL, только появляются свои прелести. Поучить?
 

Цитата:
Не понял, о чем речь. Человек сокрушался про объем exe

Речь про то, что чел пишет на API, и как основное приемущество приводит размер exe. Так я и объясняю что это "приемущество" достигается одной галочкой. А всю суть ты сам сказал в начале поста. Можно только добавить - если Вы делаете EXE без использования BPL, то совершенно очевидно, что Вам без опасения можно использовать Anti DeDe. Чтобы всякие ламеры не могли преспокойно взламывать Вашу прогу. Я так понимаю - почти все не используют BPL и не разу не слышал что кому то надо Anti DeDe. Чтобы не быть пустомелей, пожалуйте Anti DeDe UnDebug: накрапал за вечер undeb32.dpr
Согласись в тексте объём программы ещё меньше?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 14:23 22-01-2008 | Исправлено: delover, 16:33 03-03-2008
RezchiK

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Может кто знает как сделать вот такую хитрожёлтую вещь:
У меня в табилце первое поле, это "номер заказа"всё вводится вот таким макаром:

Цитата:
procedure TFZakaz.Button2Click(Sender: TObject);
begin
// добавляем пустую запись в набор Glavn
DataModule1.TableGlavn1.Insert;
DBGrid1.Fields[0].AsInteger;
DataModule1.TableGlavn1.Fields[1].AsInteger:=StrToInt(Edit1.Text); // номер заказа
DataModule1.TableGlavn1.Fields[2].AsString:=Edit2.Text; // заказчик
DataModule1.TableGlavn1.Fields[3].AsString:=Edit3.Text; // Адрес
DataModule1.TableGlavn1.Fields[4].AsDateTime:=StrToDateTime(MaskEdit1.Text);// дата заказа
DataModule1.TableGlavn1.Fields[5].AsDateTime:=StrToDateTime(MaskEdit2.Text);// дата изготовления
DataModule1.TableGlavn1.Fields[6].AsInteger:=StrToInt(Edit4.Text); // стоимость
DataModule1.TableGlavn1.Fields[7].AsString:=Edit5.Text; // название изделия
DataModule1.TableGlavn1.Fields[8].AsString:=Edit6.Text;
DataModule1.TableGlavn1.Fields[9].AsString:=label11.Caption;
DataModule1.TableGlavn1.Fields[10].AsString:=label12.Caption;
edit1.Clear;
edit2.Clear;
edit3.Clear;
MaskEdit1.Clear;
MaskEdit2.Clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;
label11.Caption:='';
label12.Caption:='';
end;

 
 
как мне сделать чтоб при последующем заполнении поля "номер заказа" он выдал  масагу мол так и так, вообщем такой номер уже есть))), если запись с таким"номером заказа" уже имеется...
 
И вот такой ещё квейшенс...как это можно сделать: я задаю номер заказа и прога выдаёт мне всё по этому заказу(нужно для печати). Зарание благодарю    

Всего записей: 19 | Зарегистр. 19-12-2007 | Отправлено: 17:09 22-01-2008 | Исправлено: RezchiK, 17:54 22-01-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Как я понял UnDebug находит ресурс с названием PACKAGEINFO и записывает туда всякую билиберду. А что она еще делает? Мне пока не хватает сил разобратся в этом самому. Кстати может стоит просто удалять ресурсы PACKAGEINFO и DVCLAL?

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 18:30 22-01-2008 | Исправлено: Frodo_Torbins, 18:33 22-01-2008
jONES1979



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

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

 
если не хочешь связываться с обработкой исключений при инсерте уже cуществующего номера - ПЕРЕД инсертом необходимо САМОМУ проверить не существует ли он уже. Например выполнив SELECT-запрос к этой же таблице. Если вернёт 0 записей, то всё отлично, если 1 или больше(гыы) - значит такой номер уже существует.
 

Цитата:
как это можно сделать: я задаю номер заказа и прога выдаёт мне всё по этому заказу(нужно для печати)

перейти на нужную запись с пом. метода Locate или, опять же, в отдельном t[xxx]Query выполнить SELECT-запрос

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 18:58 22-01-2008 | Исправлено: jONES1979, 18:59 22-01-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Прога делает вот какую вещь:
1. На расстоянии от BASE_OF_CODE, до этого места искать имена нельзя. До точки ENTRY_IMPORT, после этой точки идут другие имена и все ресурсы. Так вот на этом расстоянии находит имена UNIT-ов (для экзешника без BPL это бесполезная отладочная инфа). И как ты правильно заметил заполняет билибердой.
2. PACKAGEINFO заполняет билибердой, но только после первого имени программы, так что корректность PACKAGEINFO остаётся.
 
Что это даёт?
1. Когда DeDe пытается записать файлы форм, они содержат некорректные символы которые нельзя использовать в именах файлов. В этот момент она выводит ошибку и прекращает дамп.
2. Она не находит связей между модулями Classes и Classes. Теперь для неё это разные модули. Крыша у неё начинает ехать основательно. Когда я смотрю процедуры то программа выполняет 0000 - в асме это add ax...
3. DeDe в этом случае обязательно пытается запустить программу когда я нажымаю кнопку Proccess. Без этой кнопки я вообще ничего не увижу. Так вот DeDe запускает мою защищённую прогу обязательно. Но только незадача - у меня в секции initialization стоит процедура KillUnknownStarter. Она смотрит Copyright запустившей программы и если копирайта нет, то она делает Kill запустившего процесса вместе с собой. В результате, когда мы в DeDe нажимаем кнопку Proccess, то программа захлапывается. Так что DeDe становится совершенно бесполезным инструментом.
4. В добавок в бат файле имеется StripReloc и UPX. Так что взломать проу жутко проблемматично.
 
Я просто полагаю у всех нормальных программистов есть JCL? Без него вообще смысла работать нет, да и он весь в исходниках, бояться нечего. Так он её использует, вот и все нюансы. Да забыл (Удалено: KillUnknownStarter], уже находится в коде в предыдущем посте).
 
Скидал на скорую руку, так что можешь проверить DeDe в дауне.
 

Цитата:
Кстати может стоит просто удалять ресурсы PACKAGEINFO и DVCLAL?

DVCLAL Удалять не рекомендую. А утилиту по удалению PACKAGEINFO мне писать лень. Удалять можно без проблемм, но это же ручками, а я что дурак ручками? Кстати в случае удаления PACKAGEINFO DeDe становится "хитрее". Так что не стоит пачькаться, d PACKAGEINFO остаётся исходное имя программы, на тот случай если её переименовали, то имя можно узнать. Попробуй потестить, думаю повеселишься на славу.
 

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:23 22-01-2008 | Исправлено: delover, 16:25 29-01-2008
RezchiK

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

Цитата:
если не хочешь связываться с обработкой исключений при инсерте уже cуществующего номера - ПЕРЕД инсертом необходимо САМОМУ проверить не существует ли он уже. Например выполнив SELECT-запрос к этой же таблице. Если вернёт 0 записей, то всё отлично, если 1 или больше(гыы) - значит такой номер уже существует.

Не напрвавишь на путь истины, а то у меня башка уже не соображает, так как я как истинный студент весь семестр работал и естественно забивал на учёбу, и вот курсач и все лабы за пару дней делаю, а это остался последний штрих)))

Всего записей: 19 | Зарегистр. 19-12-2007 | Отправлено: 20:08 22-01-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover:
Цитата:
DVCLAL Удалять не рекомендую.

К чему это может привести?
И еще. Стоит ли так опасаться DeDe, ведь он не показывает содержимое процедур и функций (хотя информации всеже дает много). И новые версии делфей вроде не понимает.
 
P.S. А можно ли заставить стандартный компилятор не добавлять лишней информации?

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 20:36 22-01-2008
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
delover
Интересная инфа. Респект.
Только мне она вряд ли будет полезна, ибо я не занимаюсь более коммерческим софтом. Хотите взломать мои проги - пожалуйста, а будете поумнее, то просто попросите у меня исходники
 
Проблема взлома очень актуальна, да. Чем полезнее софт, тем более он должен быть защищен. И, думаю, никто не оспорит сей факт, что затраты на взлом софта должны превышать затраты на его покупку.  
Если я напишу тетрис, то вряд ли стану его защищать

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 06:08 23-01-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а почему действительно не рекомендуется удалять DVCLAL? Я потом дочищаю экзешник после компиляции. Выигрыш в размере увеличивается еще на 5-7 кб.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 08:22 23-01-2008
delover

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

Цитата:
а почему действительно не рекомендуется удалять DVCLAL?

Это только навскидку я приведу явно зависимые от DVCLAL функции. Правда этот набор ещё зависит от версии Delphi.
 
1. TSession.InitializeBDE;
2. TSQLConnection.DoConnect;
3. TDataSource.Create(AOwner: TComponent);
4. TBaseSocket.Create(AOwner: TComponent);
5. TSoapConnection.Create(AOwner: TComponent);
6. TDBCtrlGridLink.Create(DBCtrlGrid: TDBCtrlGrid);
7. TDSTableProducerEditor.Create(DSTableProducer: TDSTableProducer);
8. TBasePageProducer.Create(AOwner: TComponent);
9. TCustomWebDispatcher.Create(AOwner: TComponent);
10. Весь Decision Cube.
11. TConnectionBroker.Create(AOwner: TComponent);
12. TDispatchConnection.Create(AOwner: TComponent);
13. TLocalConnection.Create(AOwner: TComponent);
...
 
Это я начесал только с одной версии Delphi и только явно зависимые. У меня прога которая не использовала этих функций перестаёт работать.  
1. Но перестала работать это довод номер 1. Откажись для данной версии от стандартных компонентов и все дела.
2. Довод номер 2 - это то, что всё же как никак рас защищают этим в Delphi свои технологии значит это идентификатор продукта и авторское право. Мне не по пути с нарушителями авторского права. У меня лицензионные Windows, Delphi 7,2005,2006, MSSQL и даже Beyond Compare 2. И дома и на работе. Пусть прикольные хипари которые это всё делали получат свои законные деньги и авторские права.
3. На вскидку DVCLAL занимает 16 байт, в ручную удалять его из-за 16-и байт - это геморой.
4. Эта штука не только стандарт Delphi. И не имеет отношения к "отладочной информации и взлому программ". Проще удалить копирайты и номера версии из программы. Это будет корректнее.
5. Б$%^ля, переживать из-за 16 байт и не сократить имя класса, количество классов, не сократить строки сообщений для пользователя - это уже будет не последовательно.
6. Времена когда мы программисты бились за 16 байт прошли. Слава тебе господи в продаже уже винты на 1 террабайт.
7. System Commander 7, замечательный мэнеджер мультизагрузки. После инсталляции занимает ~30мб. Я бы очень хотел, чтобы на моём 400гб винте он занимал хотябы 300мб и был менее убогим, но более безопасным. Я от него отказался, - ему просто не вырасти, а Вы мне по 16 байт. Ну убого нарушать авторство ради того, что не является даже показателем для тех кто в авторстве не смыслит, а размер желал бы больший.
 
Добавлено:
ЗЫ: Равносильно тому, чтобы тошнотик или дистрофик, чтобы ещё больше похудеть вырезал себе печень.
 
vladk1973

Цитата:
Интересная инфа. Респект.  

Всегда пожалуйста. А прога действительно неплохая - там стиль консольного приложения правильный.
 
Добавлено:
Да и забыл

Цитата:
Хотите взломать мои проги - пожалуйста, а будете поумнее, то просто попросите у меня исходники

У меня по другому. Хотите взломать проги - фиг Вам, нех$%^ лазить в бин, буть человеком, наберись смелости и спроси текст, или как сделать. Тоже отдам текст и буду рад что юзер не зависит от версии компилятора и винды. Нех;№% заниматься временным и растрачивать жизнь на сиюминутное.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 12:55 23-01-2008
RobikBobik



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

Цитата:
var
   rDB: DBDesc ;
begin
   Check(DbiGetDatabaseDesc('DBFTBLS', @rDB)) ;
   DDName := StrPas(rDB.szPhyName) + '\';
end;

Взято из форума по Delphi, вставлено в приложение на Д6 и нормально исполняется, - получаем путь к базе по алиасу 'DBFTBLS'.
 
Но это не работает, если код вставлен в FormCreate, - получаем ошибку $2104:
 

 
Не понимаю, - пожалуйста,  расскажите, что за фича?
 
Добавлено:
Разобрался.
Надо:
Цитата:
var  
   rDB: DBDesc ;  
begin  
Session.Open;
   Check(DbiGetDatabaseDesc('DBFTBLS', @rDB)) ;  
   DDName := StrPas(rDB.szPhyName) + '\';  
end;  

 
Спасибо всем!
 

Всего записей: 49 | Зарегистр. 31-10-2005 | Отправлено: 14:41 23-01-2008 | Исправлено: RobikBobik, 15:42 23-01-2008
HalfLitre



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[удалено]
Разобрался

Всего записей: 265 | Зарегистр. 16-08-2004 | Отправлено: 15:56 23-01-2008 | Исправлено: HalfLitre, 17:38 23-01-2008
OOD

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем добрый день помогите справиться с проблемой требуется постоянно переписывать файл который создается другим приложением , в сетевую папку, или же передавать его через UDP Socks на локальный компьютер ...
через батник делаю просто :
 
copy *.* \\netcomp\shara\*.* /y
 
с UDP и Socetaми разобраться толком не могу подскажите как это реализовать  
 
 
 

Всего записей: 3379 | Зарегистр. 20-05-2006 | Отправлено: 10:16 24-01-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OOD
Во первых задача вообще не ясна, нужны подробности, а экстрасенсов нет. Во вторых, а нужен ли тебе геморой с сокетами? Сокет это обязательно передающая программа и получающая. Так вот там где тебе нужно писать файл должна всегда крутиться получающая программа. Стоит ли дополнительно нагружать систему, если всё и так работает?
 
Добавлено:
OOD
Ну и посмотри на досуге :\Program Files\Borland\Delphi6\Demos\Internet\Chat

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 11:25 24-01-2008
RezchiK

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
У меня такая невезуха с фильтрацией БД-точнее она не выполняется((( создал вторичные ключи у полей 'FIOZakaz' и 'Material'...может что кто подскажет...оодин раз правдв она выполнилась, пока я не ввёл второй параметр фильтрации, потом и вовсе пересала фильтроватся((( ....

Цитата:
 
procedure TFBase.Button3Click(Sender: TObject);
begin
if edit1.Text='' then ShowMessage('Введите параметр фильтра') else
begin
DataModule1.TableGlavn1.IndexName:='IND';
DataModule1.TableGlavn1.SetRangeStart;
DataModule1.TableGlavn1.FieldByName('FIOZakaz').AsString:=Edit1.Text;
DataModule1.TableGlavn1.SetRangeEnd;
DataModule1.TableGlavn1.FieldByName('FIOZakaz').AsString:=Edit1.Text;
DataModule1.TableGlavn1.ApplyRange;
end; end;
 
procedure TFBase.Button2Click(Sender: TObject);
begin
DataModule1.TableGlavn1.CancelRange; Edit1.Clear;
end;
 
procedure TFBase.Button4Click(Sender: TObject);
begin
if edit2.Text='' then ShowMessage('Введите параметр фильтра') else
begin
DataModule1.TableGlavn1.IndexName:='IND';
DataModule1.TableGlavn1.SetRangeStart;
DataModule1.TableGlavn1.FieldByName('Material').AsString:=Edit2.Text;
DataModule1.TableGlavn1.SetRangeEnd;
DataModule1.TableGlavn1.FieldByName('Material').AsString:=Edit2.Text;
DataModule1.TableGlavn1.ApplyRange;
end; end;
 
procedure TFBase.Button5Click(Sender: TObject);
begin
DataModule1.TableGlavn1.CancelRange; Edit2.Clear;
end;


Всего записей: 19 | Зарегистр. 19-12-2007 | Отправлено: 22:13 24-01-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня идиотский вопрос (как всегда).
Возможно ли скомпилировать 64-битное приложение с помощью Делфи? Или вообще никак?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 23:28 24-01-2008
vladk1973



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

Цитата:
DataModule1.TableGlavn1.FieldByName('Material').AsString:=Edit2.Text;
DataModule1.TableGlavn1.SetRangeEnd;
DataModule1.TableGlavn1.FieldByName('Material').AsString:=Edit2.Text;  

А что, Edit1 не задействован?

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 07:31 25-01-2008
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maks150988
С помощью делфей никак. Можешь глянуть в строну FreePascal - там есть компилятор под x64.
А вообще, при том что ты принципиально не пользуешься VCL, мне не очень понятно почему делфи, а не  Visual Studio и C++ - все то же самое плюс гораздо более полный хелп, плюс x64, плюс не надо на часть апишных функций самому писать external-описания, котрые борландовцы почему-то то ли забыли, то ли не захотели.

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 07:44 25-01-2008
RezchiK

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vladk1973
Edit1 задействован, просто надо было в таблице у вторичных индексов галочку у свойства уникальный убрать и всё заработало)))

Всего записей: 19 | Зарегистр. 19-12-2007 | Отправлено: 08:43 25-01-2008
Czechoslovak



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

Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 09:48 25-01-2008
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru