Автор | Сообщение |
|
| |
Пост N: 83
Зарегистрирован: 31.03.07
|
|
Отправлено: 24.04.10 19:36. Заголовок: Как разобрать OBJ файл ?
В библиотеку hbct.lib вошли не все функции из клипперного варианта. Вот захотелось мне что бы не писать недостающие функции самому вытащить их из старой библиотеки. Нужный OBJ файл вытащил конечно. А вот как его разобрать на исходники ? Разные valkirie и rescue требуют непременно EXEшники.
|
|
|
Ответов - 16
[только новые]
|
|
|
| |
Пост N: 1616
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.04.10 19:47. Заголовок: Uncle_ed пишет: Раз..
Uncle_ed пишет: цитата: | Разные valkirie и rescue требуют непременно EXEшники |
| Собери простой EXE и слинкуй (RTLINK) его с вытащенными OBJ :) А каких функций не хватает в CT ?
|
|
|
|
| постоянный участник
|
Пост N: 884
Зарегистрирован: 09.10.06
|
|
Отправлено: 24.04.10 21:31. Заголовок: Uncle_ed пишет: А в..
Uncle_ed пишет: цитата: | А вот как его разобрать на исходники ? Разные valkirie и rescue требуют непременно EXEшники. |
| Оригинальная CT на asm- е написана. Чем вам валькирия поможет - не знаю. Вы лучше список недостающих функций выложите - может и подскажут, что и чем лучше заменить.
|
|
|
|
| |
Пост N: 84
Зарегистрирован: 31.03.07
|
|
Отправлено: 25.04.10 08:35. Заголовок: Ну например, Tempfil..
Ну например, Tempfile() Это первое с чем столкнулся. Конечно написать ее не проблема, но хотелось бы ближе к оригиналу иметь. Думаю есть и другие нерелизованые функции. Вытащил файл tempfile.prg из исходников библиотеки libfn от xharbour и тупо его прилинковать, но ide все равно говорит, что нет _HB_FUN_TEMPFILE Т.е. его все равно нужно сначала адаптировать под Harbour.
|
|
|
|
| постоянный участник
|
Пост N: 886
Зарегистрирован: 09.10.06
|
|
Отправлено: 25.04.10 08:59. Заголовок: b]Tempfile - это слу..
Tempfile - это случай, когда разработчики неявно подталкивают к использованию встроенных функций (а не к смене компилятора ), которые могут быть использованы на любой поддерживаемой платформе. И о Tempfile на форуме уже писалось. PROCEDURE Main LOCAL cTempFile := TempFileName() ? cTempFile FErase( cTempFile ) RETURN FUNCTION TempFileName() LOCAL nFileHandle LOCAL cFileName nFileHandle := HB_FTempCreate( ,,, @cFileName ) IF nFileHandle > 0 FClose( nFileHandle ) ENDIF RETURN cFileName
|
|
|
|
| постоянный участник
|
Пост N: 887
Зарегистрирован: 09.10.06
|
|
Отправлено: 25.04.10 09:04. Заголовок: А еще есть hb_dbCrea..
А еще есть hb_dbCreateTemp, функция аналог dbCreat. dbf-ка созданная hb_dbCreateTemp будет удалена автоматически после закрытия.
|
|
|
|
| |
Пост N: 85
Зарегистрирован: 31.03.07
|
|
Отправлено: 25.04.10 10:07. Заголовок: Спасибо - функция пр..
Спасибо - функция прокатила. Только вопрос - с чем связано ее имя TempFileName вместо TempFile ? Это принципиальная разница ?
|
|
|
|
| |
Пост N: 18
Зарегистрирован: 14.03.10
|
|
Отправлено: 25.04.10 12:08. Заголовок: FileName - используе..
FileName - используется для обозначения строковых переменных, которые содержат путь к файлу File - используется для обозначения переменных, которые содержат связь с объектом файла, и позволяют выполнять действия чтения/записи из/в файл. В данном случае TempFileName - не соответствует логике указанной функции.
|
|
|
|
| постоянный участник
|
Пост N: 888
Зарегистрирован: 09.10.06
|
|
Отправлено: 25.04.10 14:39. Заголовок: Uncle_ed пишет: Тол..
Uncle_ed пишет: цитата: | Только вопрос - с чем связано ее имя TempFileName вместо TempFile ? Это принципиальная разница ? |
| TempFileName - в данном случае пользовательская функция, вы можете присвоить ей имя TempFileName, GetTempFileName или даже более понятное qwerty_tmp007. В данном случае принципиальным является использование встроенной функции языка hb_fTempCreate(...)
|
|
|
|
| постоянный участник
|
Пост N: 889
Зарегистрирован: 09.10.06
|
|
Отправлено: 25.04.10 15:10. Заголовок: Наиль пишет: В данн..
Наиль пишет: цитата: | В данном случае TempFileName - не соответствует логике указанной функции. |
| А что по вашему возвращает TempFileName?
|
|
|
|
| |
Пост N: 89
Зарегистрирован: 31.03.07
|
|
Отправлено: 25.04.10 17:04. Заголовок: Петр Я просто пере..
Петр Я просто переименовал ее в tempfile для того чтобы не переделывать свои исходники. Чем это чревато ?
|
|
|
|
| |
Пост N: 1617
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.04.10 17:09. Заголовок: Uncle_ed пишет: Чем..
|
|
|
|
|
| |
Пост N: 91
Зарегистрирован: 31.03.07
|
|
Отправлено: 25.04.10 17:17. Заголовок: Вот и я так думаю. З..
Вот и я так думаю. Зачем тогда имя другое давать ? Спасибо
|
|
|
|
| Администратор
|
Пост N: 1417
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.04.10 10:05. Заголовок: Сегодня вечером доба..
Сегодня вечером добавлю TempFile() в xHarbour Если есть желание - гляньте на совместимость этой функции с ct А то получается вопрос небольшой, а шума много. #include "set.ch" Function TempFile(cDir, cExt, nAttr) LOCAL nFileHandle LOCAL cFileName, cNewName LOCAL nAt, cSep IF cDir == nil cDir := CurDirX() ENDIF nFileHandle := HB_FTempCreate(cDir,, nAttr, @cFileName ) IF nFileHandle > 0 FClose( nFileHandle ) nAt := Rat(".", cFileName) cSep := Set(_SET_DIRSEPARATOR) IF nAt != 0 .and. Rat(cSep, cFileName) > nAt nAt := 0 ENDIF IF cExt != nil cNewName := if(nAt==0, cFileName, Left(cFileName, nAt - 1)) + "." + cExt ELSEIF nAt != 0 cNewName := Left(cFileName, nAt - 1) ENDIF IF ! Empty(cNewName) .and. FRENAME(cFileName, cNewName) != -1 cFileName := cNewName ENDIF IF (nAt := Rat(cSep, cFileName)) != 0 cFileName := Substr(cFileName, nAt + 1) ENDIF ENDIF Return cFileName
|
|
|
|
| |
Пост N: 94
Зарегистрирован: 31.03.07
|
|
Отправлено: 27.04.10 05:24. Заголовок: протестировал - не п..
протестировал - не получилось цитата: | Error: Unresolved external '_HB_FUN_CURDIRX' referenced from C:\MINIGUI\IDE\SAMPLES\PROBA\OBJ\PROBA.OBJ |
| где эта функция сидит ? Вот если на CurDir() заменить , то работатет. Очепятка ?
|
|
|
|
| постоянный участник
|
Пост N: 890
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.04.10 08:00. Заголовок: Uncle_ed пишет: Оче..
Uncle_ed пишет: Нет. xHarbour расширение. Вариант для Harbour. Со вчерашнего дня в SVN /* * $Id: tempfile.prg 14395 2010-04-26 18:49:38Z vszakats $ */ #include "common.ch" #include "fileio.ch" FUNCTION TempFile( cDir, cExt, nAttr ) LOCAL cName LOCAL fhnd IF ISCHARACTER( cExt ) .AND. !( Left( cExt, 1 ) == "." ) cExt := "." + cExt ENDIF fhnd := hb_FTempCreateEx( @cName, cDir,, cExt, nAttr ) IF fhnd != F_ERROR FClose( fhnd ) RETURN cName ENDIF RETURN ""
|
|
|
|
| |
Пост N: 100
Зарегистрирован: 31.03.07
|
|
Отправлено: 29.04.10 09:18. Заголовок: Воткнул, протестиров..
Воткнул, протестировал всяко разно как мог - вроде бы работает нормально. Спасибо.
|
|
|
|