Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2017.07.30;
Скачать: [xml.tar.bz2];

Вниз

Заменить строку в EXE файле.   Найти похожие ветки 

 
DayGaykin ©   (2016-05-27 12:39) [0]

Добрый день, если готовая программа, написанная на Delphi 7.
В ней есть один кривой SQL запрос, который хочется поправить.
Текст этого запроса задается не в ресурсах, а присваивается во время выполнения. Это известно, т.к. есть исходный код модуля, где это делается.
И самое страшное: исправленный запрос длиннее исходного. Укоротить ну не получится никак (

Вопрос, есть ли простой путь заменить эту строку?

PS. Запрос для mysql 4, хранимых процедур нет, view-шек нет :(.

Пересобрать программу/обратиться к разработчику - не вариант. Пожалуйста, просто примите это.


 
Плохиш ©   (2016-05-27 12:42) [1]


> Пересобрать программу/обратиться к разработчику

Единственный вариант.


 
Kerk ©   (2016-05-27 12:44) [2]

Найти в асм-коде, где эта строка присваивается и поменять адрес присваиваемой строки. Саму строку положить в другое место, где она поместится.


 
iop ©   (2016-05-27 13:01) [3]

И самое страшное: исправленный запрос длиннее исходного. Укоротить ну не получится никак (


создать вьюху, в которой часть запроса укорачивается и правится косяк.
имя вьюхи подогнать под старый размер


 
iop ©   (2016-05-27 13:02) [4]

если будет слишком коротко, то добить каментами


 
iop ©   (2016-05-27 13:03) [5]

... если не получится, нанять программиста


 
Kerk ©   (2016-05-27 13:18) [6]


> iop ©   (27.05.16 13:01) [3]
>
> И самое страшное: исправленный запрос длиннее исходного.
>  Укоротить ну не получится никак (
>
> создать вьюху, в которой часть запроса укорачивается и правится
> косяк.

Кстати, классная мысль.


 
KSergey ©   (2016-05-27 13:32) [7]

Для кого автор пишет:

> PS. Запрос для mysql 4, хранимых процедур нет, view-шек нет :(.


 
KSergey ©   (2016-05-27 13:33) [8]

> iop ©   (27.05.16 13:02) [4]
> если будет слишком коротко, то добить каментами

Пробелы ничем не хуже.


 
pavel_guzhanov ©   (2016-05-27 13:33) [9]

делали мы такое на прошлой работе. Открывали exe каким-то hex-редактором, заменяли запрос. Только вот по длине новые запросы были короче старых, и их дополняли пробелами. А для случая, когда новый запрос длиннее - то должно помочь

> создать вьюху, в которой часть запроса укорачивается


 
pavel_guzhanov ©   (2016-05-27 13:35) [10]


> Для кого автор пишет:
>
> > PS. Запрос для mysql 4, хранимых процедур нет, view-шек
> нет :(.

Блин, я это проигнорировал :о)


 
iop ©   (2016-05-27 13:39) [11]

тогда нанять шестиклассника (у них уже каникулы) который перенесет программистам базу на пятый мускул.


 
DayGaykin ©   (2016-05-27 14:25) [12]

Эта программа такой дремучий муровейник, который нельзя трогать - ни дай бог что случится. И версия установлена старая. Собранная из исходников версия не работает с этой базой, потому что новая.
Как автор этого творения обновлял ее одному ему известно. Возможно что никак или держал версию исходников.


 
iop ©   (2016-05-27 14:32) [13]

пересобирать нельзя, сервер менять  нельзя, ничего нельзя....

а на форуме-то про программу спрашивать вообще можно было?
может так и было предназначено судьбой жить с этой болью?


 
Kerk ©   (2016-05-27 15:06) [14]

А много места не хватает? Переименуй таблицу, сделай имена полей покороче и т.п. Трэш конечно, но если все остальное нельзя? :)


 
SergP ©   (2016-05-27 16:40) [15]


> Kerk ©   (27.05.16 15:06) [14]


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


> DayGaykin ©   (27.05.16 12:39)  


а запрос нельзя как-нить написать по другому, чтобы он влез на место старого?


 
KSergey ©   (2016-05-27 17:07) [16]

> Kerk ©   (27.05.16 15:06) [14]
> А много места не хватает? Переименуй таблицу, сделай имена полей покороче и т.п.

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


 
DayGaykin ©   (2016-05-27 21:02) [17]


> KSergey ©   (27.05.16 17:07) [16]

А как я в EXE файле пойму это имя таблицы или просто встретилось.
Вот так есть:

     qryExecute(qryCol,
       "SELECT DISTINCT a.id, a.name FROM stat a, tmp_tarif_cena b, tmp_service s" +
       "WHERE a.id=b.id_stat AND b.id = s.id_cena ORDER BY 1 ", True);



Вот так надо:

     qryExecute(qryCol,
       "SELECT DISTINCT a.id, a.name FROM stat a, tmp_tarif_cena b " +
       "WHERE a.id=b.id_stat AND b.id IN (SELECT id_cena FROM tmp_service UNION SELECT id_cena FROM tmp_shet) ORDER BY 1", True);


Да, tmp_* - это временные таблицы, созданные в этой функции и они убиваются при выходе.

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


 
Rouse_ ©   (2016-05-27 21:12) [18]

Патч экзешника рассматривается?


 
NoUser ©   (2016-05-27 21:36) [19]

В теории:
1) докрутить нужный ресурс ресурс-хаком или чем другим, запомнив нужное смещение
2) посмотреть/найти идой или чем другим откуда ссылки на старую строку
3) подредактировать экзе, учитывая смещение новой строки


 
Плохиш ©   (2016-05-27 22:09) [20]


> Моя задача поддерживать эту программу, пока мы не отладим
> как следует новую (а это еще год минимум).

Наймите нормального менеджера для общения с клиентами, который в состоянии объяснить клиенту, что поддержка глубоко старых версий не подразумевает внесение в них каких-либо изменений.


 
NoUser ©   (2016-05-27 23:38) [21]

Плохиш ©, и какую бы ты привел аргументацию в ответ на вопрос, что денюжка платится,  а программа не работается ))


 
Rouse_ ©   (2016-05-27 23:59) [22]


> NoUser ©   (27.05.16 23:38) [21]
> Плохиш ©, и какую бы ты привел аргументацию в ответ на вопрос,
>  что денюжка платится,  а программа не работается ))

Это очень легко - несоблюдение технических требований для запуска продукта :)

Расскажу махонькою историю:
Вот есть у нас пользователи, жадные до жути - весь мозг техподдержке вынесли своими хотелками, которые наш техотдел должен (а техотдел всегда периодически кому-то должен) реализовать (не важно что - главное чтобы программисты  были заняты) но что-то должен реализовать, причем вчера.

И вот пользователь говорит - "ваша программа не работает!!!"

Заметьте - он не говорит, что программа работает не правильно.
Он говорит - не работает и баста.

Спрашиваем:
- а что случилось?
- я закрыла программу и ничего не сохранилось
- а при закрытии диалог при сохранении был?
- да, был
- что вы сделали?
- ну щелкнула там
- куда именно? На "Да, сохранить" или на "Нет, не сохранять" или на "Отмена"?
- на "Нет не сохранять"
- эмм... А что вы от нас хотите?
- НУ ТАК ОНО_ЖЕ НЕ СОХРАНИЛОСЬ!!!


 
Германн ©   (2016-05-28 00:47) [23]


> NoUser ©   (27.05.16 23:38) [21]
>
> Плохиш ©, и какую бы ты привел аргументацию в ответ на вопрос,
>  что денюжка платится,  а программа не работается ))

Пока не было нигде автором сказано, что пользователь постоянно платит деньги за поддержку.


 
Eraser ©   (2016-05-28 01:06) [24]


> Rouse_ ©   (27.05.16 23:59) [22]

такие вещи за пределы службы поддержки вообще не должны выходить.
не дай бог если у власти окажется товарищ, который скажет, что нужно прислушаться к этой женщине и каким-то образом поменять UI и юзабилити, чтобы было, как у Эппла, понятно каждой блондинке и все работало автоматически. тут можно вешаться, для корпоративного софта это смерть )

в саппорт вообще много графоманов пишет, добрая треть. любители поговорить по телефону - это вообще жэсть, там 4/5 несусветная чушь. не отключаем саппорт по телефону только по той причине, что оставшиеся 1/5, зачастую, крупные и серьезные клиенты.

:-)


 
Германн ©   (2016-05-28 02:09) [25]


> Eraser ©   (28.05.16 01:06) [24]
>
>
> > Rouse_ ©   (27.05.16 23:59) [22]
>
> такие вещи за пределы службы поддержки вообще не должны
> выходить.

Вообще-то должны выходить. Ну случай грандсметы оставляем. Там грамотные люди.
Программы -то пишутся не для их авторов.
Ну а если "у власти окажется товарищ, который скажет, что нужно...", то нужно разбираться с этим товарищем.


 
Eraser ©   (2016-05-28 02:16) [26]


> Германн ©   (28.05.16 02:09) [25]


> Вообще-то должны выходить.

не должны, в случае единичного обращения. если есть уверенность, что проблема массовая и волнует многих, тогда да.

точно так же, как и нельзя обращать уж очень много внимания на пожелания одного, пусть и очень общительного пользователя.


 
Inovet ©   (2016-05-28 02:24) [27]

> [22] Rouse_ ©   (27.05.16 23:59)
> - НУ ТАК ОНО_ЖЕ НЕ СОХРАНИЛОСЬ!!!

Недоработка. Надо чтобы ОНО всегда сохранеялось, независимо от ответа пользователя, но чтобы ОНО можно было отсенить, но приэтом, чтобы пользователь видел ЭТО, как ему хочется в каждый текущий момент.:)


 
Германн ©   (2016-05-28 02:45) [28]

2 Eraser ©   (28.05.16 02:16) [26]

> если есть уверенность, что проблема массовая и волнует многих,
>  тогда да.
>

Ну и я примерно о том же.
Случай ТС мне не очень понятен. Волнует ли эта проблема одного пользователя или многих?


 
DayGaykin ©   (2016-05-28 09:24) [29]


> Rouse_ ©   (27.05.16 21:12) [18]
> Патч экзешника рассматривается?

Да. Либо патч екзешника, либо хотпатч (это мне больше понятно как сделать)


 
KSergey ©   (2016-05-28 14:08) [30]

> DayGaykin ©   (27.05.16 21:02) [17]
> Программа у клиента сильно старой версии. Новые версии не
> могут работать с той базой (выкидывают ошибки, а мест, где
> это может произойти, в программе очень много)
> Автор программы не предусмотрел нормального обновление и
> одному ему известно как это делать.

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

> Автор программы не предусмотрел нормального обновление и
> одному ему известно как это делать.

Имеющий глаза да увидит различия в структуре БД.
Опять же, это всяко меньше года, тем более, что рано или поздно понадобится обновлять клиентские базы на новую версию.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2017.07.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.002 c
3-1314215120
MikeZ
2011-08-24 23:45
2017.07.30
Несколько запросов подряд


15-1464298202
Юрий
2016-05-27 00:30
2017.07.30
С днем рождения ! 27 мая 2016 пятница


15-1462560299
Inovet
2016-05-06 21:44
2017.07.30
С Днём Радио!


15-1464435460
pavelnk
2016-05-28 14:37
2017.07.30
Что это было?


2-1441605362
Иван Д.
2015-09-07 08:56
2017.07.30
Кроказябры в Post-Запросе.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский