Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Такая тема. вызывается процедура, в которой выполняется ряд вычислений / внесения данных. потом вызывается метод free : wb.free; История такая: когда у меня эта процедура прописана в том же модуле, где и основная программа: procedure TForm1.AddRecordToXLS( ... ); - все работает нормально. Когда я выношу эту процедуру ( procedure AddRecordToXLS( ... ); ) в отдельную dll ' ку - то при вызове метода free: wb.free; у меня вылетает ошибка: Project c:\ ..... faulted with message: 'access violation at 0x00000000: read of address 0x00000000'. что за хрень, подскажите плз !... в dll'ку выношу следующим макаром: в dll'ке: procedure AddRecordToXLS( ... ); begin .... end; exports AddRecordToXLS; в программе: procedure AddRecordToXLS (... ); external 'export2excel.dll'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 07:23 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Заголовок процедуры и код ее вызова В СТУДИЮ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 07:50 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Процедура: procedure AddRecordToXLS(sh: TvteXLSWorksheet; Rec: TFields; StartRow: integer; StartCol: integer; StartField: integer); safecall; var i: integer; DateTime :double; begin for i := StartField to Rec.Count - 1 do begin if Rec.Fields .DataType = ftDateTime then begin DateTime := Rec.Fields.Value; sh.Ranges[ StartCol + i - StartField, StartRow, StartCol + i - StartField, StartRow].Value := DateTime; sh.Ranges[ StartCol + i - StartField, StartRow, StartCol + i - StartField, StartRow].Format := 'dd/mm/yy'; end else sh.Ranges[ StartCol + i - StartField, StartRow, StartCol + i - StartField, StartRow].Value := Rec.Fields.Value; SetCell2(sh.Ranges[ StartCol + i - StartField, StartRow, StartCol + i - StartField, StartRow], True); end; end; (safecall - что с ним, что без - трабл остается) sh - лист Excel'я, wb - WorkBook Excel'я. спецбиблиотечки используются (vte). в процедуре добавляется строка из базы в лист Екселя. вызов процедуры в программе: AddRecordToXLS(sh, ADOQuery1.Fields, Row, Col, 1); В конце программы я сохраняю этот wb в формате XLS и вызываю wb.free. вылетает ошибка.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 08:18 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
TvteXLSWorksheet - это тип variant? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 08:28 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Нет.. спецтип.. в памяти создается WorkBook со структурой, похожей на Excel'ную.. TvteXLSWorksheet - WorkSheet со структурой, похожей на Excel'ный WorkSheet. использую эту хрень, дабы не возиться с Excel'ем (медленно с ним да и ненадежно.. :( ).. http://www.vtktools.ru/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 08:33 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Кинь полное описание типа. Проблема, кажется, именно в нем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 08:48 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
куда скинуть?.. я могу целиком эту библиотечку скинуть.. в архиве (рар) - 500 кб. (для Дельфи + Дока) полная (с библиотеками для Си + Пример) - 1.2 Мб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 08:53 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Нет, кинь следующее: TvteXLSWorksheet = type... и так далее. Только описание типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 08:55 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
последняя версия этой библиотеки - 1.3.3. исходный текст - тока для 1.1. (но принципиальных изменений в ней скорее всего нет).. ////////////////////////////// // // TvteXLSWorksheet // ////////////////////////////// TvteXLSWorksheet = class(TObject) private FWorkbook : TvteXLSWorkbook; FTitle : string; FPageSetup : TvteXLSPageSetup; FRanges : TList; FCols : TList; FRows : TList; FDimensions : TRect; // sizes of worksheet in cells procedure SetTitle(Value : string); function GetRange(xl,yt,xr,yb : integer) : TvteXLSRange; function GetCol(ColIndex : integer) : TvteXLSCol; function GetRow(RowIndex : integer) : TvteXLSRow; function GetRangesCount : integer; function GetXLSRange(RangeIndex : integer) : TvteXLSRange; function GetColsCount : integer; function GetRowsCount : integer; function GetIndexInWorkBook : integer; function GetColByIndex(i : integer) : TvteXLSCol; function GetRowByIndex(i : integer) : TvteXLSRow; function AddRange(xl,yt,xr,yb : integer) : TvteXLSRange; function AddRow(RowIndex : integer) : TvteXLSRow; function AddCol(ColIndex : integer) : TvteXLSCol; public property Title : string read FTitle write SetTitle; property PageSetup : TvteXLSPageSetup read FPageSetup; property Ranges[xl,yt,xr,yb : integer] : TvteXLSRange read GetRange; default; property Cols[ColIndex : integer] : TvteXLSCol read GetCol; property Rows[RowIndex : integer] : TvteXLSRow read GetRow; property RangeByIndex[RangeIndex : integer] : TvteXLSRange read GetXLSRange; property RangesCount : integer read GetRangesCount; property ColByIndex[ColIndex : integer] : TvteXLSCol read GetColByIndex; property ColsCount : integer read GetColsCount; property RowByIndex[RowIndex : integer] : TvteXLSRow read GetRowByIndex; property RowsCount : integer read GetRowsCount; property IndexInWorkBook : integer read GetIndexInWorkBook; property Workbook : TvteXLSWorkbook read FWorkbook; property Dimensions : TRect read FDimensions; function FindRange(xl,yt,xr,yb : integer) : TvteXLSRange; function FindRow(RowIndex : integer) : TvteXLSRow; function FindCol(ColIndex : integer) : TvteXLSCol; constructor Create(AWorkbook : TvteXLSWorkbook); destructor Destroy; override; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:11 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Sorry, я не заметил wb.free :-( А ты handle dll-application сохраняешь/восстанавливаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:14 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
мм.. ничего не делаю с handle dll-application. что-то надо делать?.. но скажем так, я использую из этой dll несколько функций, и все нормально работает (тоже с этими классами - TvteXLSWorksheet). а когда вынес эту процедуру - начались проблемы при вызове wb.free .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:17 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Здесь посмотри: /topic/25673 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:19 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
А.. это уже было.. :) ок. thx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:29 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
Я не врубаюсь.. :( у меня не создается форма в DLL'ке.. только функция.. и что делать с Handle мне тоже непонятно.. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:40 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
мда.... по мойму заставить это работать юудет проблематично.... в библиотеке ты перераспределяешь память, работая с вариантом... а потом приложение освобождает ее... попробуй ВЕСЬ модуль работы с Excel вынести в dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 10:01 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
а.. упс... возможно, как раз поэтому у меня работают другие процедуры - в них я только меняю значения уже существующих переменных, не создавая новых.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 10:13 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
вполне возможно..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 03:24 |
|
||
|
Ошибка при вызове процедуры из dll'ки
|
|||
|---|---|---|---|
|
#18+
посмотри тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 03:26 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32123379&tid=2118844]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 353ms |

| 0 / 0 |
