Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: С вызовом external функции из потока какие-то непонятки  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 13946
_Vasilisk_,

Если так, то почему не создать это окно при вызове первой, безобидной функции "Ты здесь?"
4 окт 18, 14:13    [21695224]     Ответить | Цитировать Сообщить модератору
 Re: С вызовом external функции из потока какие-то непонятки  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10578
Flying-home
Если так, то почему не создать это окно при вызове первой, безобидной функции "Ты здесь?"
С этим вопросом - к разработчикам.

Я вам указал вероятную причину. Единственное чем отличается основной поток от дополнительных - наличие очереди обработки сообщений
4 окт 18, 14:24    [21695237]     Ответить | Цитировать Сообщить модератору
 Re: С вызовом external функции из потока какие-то непонятки  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 45930

_Vasilisk_
Я вам указал вероятную причину.

Это причина по которой функции могут не работать. Ошибка 216 от этого вряд ли вылезет.

Аффтар, DrMemory в руки и смотреть где shit happen.

Posted via ActualForum NNTP Server 1.5

4 окт 18, 14:40    [21695262]     Ответить | Цитировать Сообщить модератору
 Re: С вызовом external функции из потока какие-то непонятки  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 24330
_Vasilisk_
Единственное чем отличается основной поток от дополнительных - наличие очереди обработки сообщений

Откуда уверенность, что у доп. потока нет очереди сообщений?
4 окт 18, 15:04    [21695311]     Ответить | Цитировать Сообщить модератору
 Re: С вызовом external функции из потока какие-то непонятки  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3562
Короче, мне надоело.
Напиши уже IsMultiThreaded := True в begin end файла dpr библиотеки.
4 окт 18, 15:30    [21695366]     Ответить | Цитировать Сообщить модератору
 Re: С вызовом external функции из потока какие-то непонятки  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10578
YuRock
Напиши уже IsMultiThreaded := True в begin end файла dpr библиотеки.
Я не уверен, что библиотека у автора с исходниками и на делфи
wadman
Откуда уверенность, что у доп. потока нет очереди сообщений?
Хрустальный шар
4 окт 18, 15:50    [21695411]     Ответить | Цитировать Сообщить модератору
 Re: С вызовом external функции из потока какие-то непонятки  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 13946
Кстати, раз уж зашел разговор про память, меня давно мучает вопрос. Могу ли я создавать StringList в одной процедуре, а освобождать в другой? Ведь если не забывать про освобождение, проблем не должно быть?
  ...
  Lines := StringParts(Line);
  ...
  Lines.Free;
  ...

function StringParts(s : String) : TStringList;
begin
  result := TStringList.Create;
  result.Delimiter := ',';
  result.StrictDelimiter := true;
  result.DelimitedText := s;
end;


И это, прога заработала. Всем спасибо за обсуждение. Первый вызов делаю в основном потоке.
4 окт 18, 18:04    [21695608]     Ответить | Цитировать Сообщить модератору
 Re: С вызовом external функции из потока какие-то непонятки  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10578
Flying-home
Могу ли я создавать StringList в одной процедуре, а освобождать в другой?
Если аккуратно, то можно
  ...
  Lines := StringParts(Line);
  try
    ...
  finally
    Lines.Free;
  end;
  ...

function StringParts(s : String) : TStringList;
begin
  result := TStringList.Create;
  try
    result.Delimiter := ',';
    result.StrictDelimiter := true;
    result.DelimitedText := s;
  except
    Result.Free;
    raise;
  end;
end;
4 окт 18, 18:46    [21695666]     Ответить | Цитировать Сообщить модератору
 Re: С вызовом external функции из потока какие-то непонятки  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 13946
Похоже, действительно, этот API потоконебезопасный.
автор
Closing the API

function oziCloseApi:integer;stdcall;

Versions
API - 1.08

Frees up any windows or data the dll has created for its own use.

The function should be called before your own program exits otherwise you may get an error (especially if running on win 2000).

If programming in Delphi you could place the call in the Destroy method of your main form.
5 окт 18, 08:49    [21695971]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить