Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2008, 17:02   #11
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Может надо как-то память освободить или что-то подобное?
Да, по всей видимости ошибка связана с неправельным освобождением памяти. Внимательней отнеситесь к вызову диструкторов объектов. Это наврят ли связано с подключением ShareMem. В таких случаях бывает, что ошибка то появляется, то нет.
Sibedir вне форума Ответить с цитированием
Старый 03.10.2008, 17:30   #12
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Ну вы и намудрили, в первом посте всё просто - не хватает reset(f1) и {$APPTYPE CONSOLE} и, самое главное, ShareMem в uses НА ПЕРВОМ МЕСТЕ (это важно).
пыщь
JTG вне форума Ответить с цитированием
Старый 03.10.2008, 18:05   #13
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Ну вы и намудрили, в первом посте всё просто - не хватает reset(f1)
Но если бы дело было в этом, то ошибка вылетила бы сразу при readln(f1,s1[i]);. А тут она при завершении программы вылетает. Или я не прав?
Цитата:
самое главное, ShareMem в uses НА ПЕРВОМ МЕСТЕ (это важно).
Точно так. Я вообще так и таписал в примере, но забыл уторчнить, а это действительно важно.
Sibedir вне форума Ответить с цитированием
Старый 03.10.2008, 18:40   #14
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Либа
Код:
library Project1;

type
  PArray = ^TArray;
  TArray = array [1..50] of string;

{$R *.res}

Function ReadContent(var buffer: PArray; var count: integer):boolean; stdcall;
var f: TextFile;
    i:integer;
begin
  AssignFile(f,'C:\jlink.log');
  i:=0;
  Reset(f);
  repeat
    inc(i);
    readln(f,buffer^[i]);
  until eof(f);
  count:=i;
  CloseFile(f)
end;

exports
   ReadContent;

begin
end.
Прога
Код:
program Project1;

{$APPTYPE CONSOLE}

type
  PArray = ^TArray;
  TArray = array [1..50] of string;

var
  j, count: integer;
  data: PArray;

  Function ReadContent(var buffer: PArray; var count:integer):boolean; stdcall; external 'project1.dll';

begin
  New(data);

  ReadContent(data, count);
  for j:=1 to count do writeln(data^[j]);
  readln;

  Dispose(data);
end.
В либу передаётся только указатель на область памяти, так что sharemem тут (наверно) не нужен
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача компонента как параметра в функцию hayhay Microsoft Office Excel 1 11.03.2008 15:53
Передача параметра в поток joker Win Api 10 22.12.2007 12:53
Извлечь число из строки и присвоить его переменной. Adamant Общие вопросы C/C++ 3 12.11.2007 07:24
Передача параметра компаненту на другой форме. Kukkk Компоненты Delphi 1 28.09.2007 00:31