powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
18 сообщений из 43, страница 2 из 2
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804429
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ural2,
Используй widestring!
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804435
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ural2,

Дико грязный хак:
Код: pascal
1.
ds_name := TEncoding.Default.GetString(TBytes(Pointer(ds.Name)));



Более цивилизованный способ:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
type

 TEncodingHelper = Class Helper For TEncoding

  Function GetString(ABytes : PByte; ACount : Integer) : String;

 End;

{ TEncodingHelper }

Function TEncodingHelper.GetString(ABytes : PByte; ACount : Integer) : String;
Var

 Count : Integer;

Begin

 Result := '';

 If Assigned(ABytes) Then
  Begin

   Count := GetCharCount(ABytes, ACount);

   SetLength(Result, Count);
   GetChars(ABytes, ACount, Pointer(Result), Count);

  End;

End;

...

ds_name := TEncoding.Default.GetString(Pointer(ds.Name), Length(ds.Name));
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804439
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ural2Получаю из dll 2007 массив из указателей на DataSets

Обломись без вариантов. Передача объектов между рантаймами разных версий невозможна.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804441
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovОбломись без вариантов. Передача объектов между рантаймами разных версий невозможна.
Не то что бы невозможна. Возможно, но это будут объекты несовместимые с новыми.
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804444
Ural2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Kazantsev Alexey]Ural2,

Дико грязный хак:
Код: pascal
1.
ds_name := TEncoding.Default.GetString(TBytes(Pointer(ds.Name)));



Это сработало! Попробую теперь данные из DS прочитать.
Спасибо!
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804445
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ural2Это сработало!

Ага, привет, утечки памяти, её порча уже не за горами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804451
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАга, привет, утечки памяти
Конкретном в этом месте утечек не будет.
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804454
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyКонкретном в этом месте утечек не будет.

ds версии 2007 возвращает Name как AnsiString со счётчиком ссылок равным 2. RTL XE3
обращается с полученным указателем как с UnicodeString без счётчика ссылок и освобождает
занимаемую ею память после использования. Я не хотел бы отлаживать эту кашу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804456
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovds версии 2007 возвращает Name как AnsiString со счётчиком ссылок равным 2. RTL XE3
обращается с полученным указателем как с UnicodeString без счётчика ссылок и освобождает
занимаемую ею память после использования
Ты код посмотри, там нет прямого копирования строк (Name - свойство без геттера).
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804463
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyТы код посмотри, там нет прямого копирования строк (Name - свойство без геттера).

Именно поэтому оно возвращает непосредственно указатель FName, увеличивая его счётчик ссылок.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804468
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИменно поэтому оно возвращает непосредственно указатель FName, увеличивая его счётчик ссылок.
Ничего оно не увелчивает. Счетчик увеличивается при копировании. Здесь копирования нет, делается чтение по адресу.
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804477
Ural2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreatDimitry SibiryakovОбломись без вариантов. Передача объектов между рантаймами разных версий невозможна.
Не то что бы невозможна. Возможно, но это будут объекты несовместимые с новыми.
Да, DataSet-ы я получила, но делать с ними ничего не могу...
Код: pascal
1.
2.
3.
4.
5.
6.
    TableView1.BeginUpdate();
    TableView1.ClearItems;
    DataSource1.DataSet:=TDataSet(A_ds[i]);   // здесь Access Violation
    TableView1.DataController.DataSource:=DataSource1;
    TableView1.DataController.CreateAllItems;
    TableView1.EndUpdate;


Неужели сдаваться?..
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804478
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ural2,

Прокладочку писать...
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804499
shonli95
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function AnsiStringToPAnsiChar(Str: AnsiString): PAnsiChar;
begin
  Result := PAnsiChar(Str);
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  Test: AnsiString;
  ToValue: PAnsiChar;
begin
  Test := 'Ansi Test String';
  ToValue := AnsiStringToPAnsiChar(Test);
  ShowMessage(ToValue);
end;




Код: pascal
1.
2.
3.
4.
 Result := PAnsiChar(Str);
 mov eax,[ebp-$04]
 call @LStrToPChar
 mov [ebp-$08],eax
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804593
L1G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ural2, т.к. у вас уже есть решение через файлы - просто переделайте их на memory mapped (mmf)
http://delphikingdom.com/asp/viewitem.asp?catalogid=513
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39804728
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как все запущено... возврат VCL объектов из DLL... только "прокладка", иначе загадочных глюков не оберешься. Причем вылезать будут в самых неожиданных моментах.
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39805033
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyПрокладочку писать...Не взлетит. Ты код видел?Ural2
Код: pascal
1.
DataSource1.DataSet:=TDataSet(A_ds[i]);

Если бы работа шла только с DataSet можно было бы проложить интерфейс. А она хочет его подключить к DataSource и, как я понимаю, еще и отобразить на каком-то DBControl.

Т.е. это в прокладке нужно экспортировать какой-нибудь интерфейс IDataSet, а потом в основной программе писать своего наследника TDataSet, который бы поднимал данные из этого интерфейса. Удовольствие еще то
...
Рейтинг: 0 / 0
Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
    #39805038
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

У ТС уже есть работающая прокладка , просто нужно переделать выгрузку в файлы на выгрузку в память.
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в delhhi XE3 считать строку из dll, написанной на delphi 2007
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]