Вниз
Скачать: CL | DM;

FileMapping и TList   Найти похожие ветки 

 
ShiFT   (2005-08-25 10:03) [0]

вопрос как можно записать в память TList.
и как потом считать их.
Количество итемов неизвестно.


 
Reindeer Moss Eater ©   (2005-08-25 10:07) [1]

Его туда не надо записывать специально.
Он и так уже в памяти, потому что в другом месте просто не может быть.


 
ShiFT   (2005-08-25 10:11) [2]

мне надо его прочитать в другой программе.
или тогда как лучше это сделать???


 
Leonid Troyanovsky ©   (2005-08-25 10:23) [3]


> ShiFT   (25.08.05 10:11) [2]
> мне надо его прочитать в другой программе.
> или тогда как лучше это сделать???


А зачем TList? Не каждая программа его поймет.
Можно просто массив, можно связный список.

--
Regards, LVT.


 
Reindeer Moss Eater ©   (2005-08-25 10:27) [4]

>мне надо его прочитать в другой программе.

А смысл? TList содержит указатели.
Они куда-то осмысленно указывают в ап твоего процесса.
А в другом процессе куда они будут указывать - я бы не стал даже гадать.


 
ShiFT   (2005-08-25 10:29) [5]

можно массив.
type
 rArticles   = record
   doc_id    : integer;
   designatio: string;
   filedate  : tdatetime;
 end;
var
 Articles : array of rArticles;

как мне можно передать эти данные в другую (свою) программу.


 
Leonid Troyanovsky ©   (2005-08-25 10:31) [6]


> ShiFT   (25.08.05 10:29) [5]
> можно массив.

>  Articles : array of rArticles;
>
> как мне можно передать эти данные в другую (свою) программу.


Сделай массив статическим и передавай.
Т.е., возможно еще потребуется индекс последнего элемента.

Ну, и, конечно, синхронизация доступа (mutex).

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-08-25 10:33) [7]


> Leonid Troyanovsky ©   (25.08.05 10:31) [6]

> Сделай массив статическим и передавай.


Ну, и замени String на ShortString.

--
Regards, LVT.


 
ShiFT   (2005-08-25 10:33) [8]

Сразу неизвестно сколько будет элементов массива.

если можно пример передачи и чтения.


 
ShiFT   (2005-08-25 11:03) [9]

и всётаки как мне это сделать.
покажите пример передачи массива записей другому приложению.


 
Leonid Troyanovsky ©   (2005-08-25 11:35) [10]


> ShiFT   (25.08.05 11:03) [9]
> и всётаки как мне это сделать.


http://www.compress.ru/Article.asp?id=2164
http://www.compress.ru/Article.asp?id=2166

Например,

http://groups.google.com/group/fido7.ru.delphi.chainik/msg/8da90a77a322f139

полезно почитать всю ветку.

> покажите пример передачи массива записей другому приложению.

Массив принципиально ничем не отличается от одной записи.

Кстати, если речь в лишь "передать", т.е. копию, то
WM_COPYDATA - проще всего.

--
Regards, LVT.


 
Digitman ©   (2005-08-25 12:02) [11]


> в другую (свою) программу


если она действительно "твоя", значит у тебя есть ее исх-ки и полное понимание ее алгоритма.

значит ее (другую "твою" программу) можно изменить/перекомпилировать, внеся изменения на предмет ЗАРАНЕЕ ПРЕДУСМОТРЕННОЙ тобой (как разработчика обеих программ) организации интерпроцессного взаимодействия.

для интерпроцессного взаимодействия подойдут NamedPipes (именованые программные каналы) и MMF (файлы отображенные в вирт.память процесса)

а TList здесь ни при чем.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.034 c
4-1122287537
AxelBlack
2005-07-25 14:32
2005.09.18
Вопрос об использовании параметров WM_SysCommand в Perform


8-1115122982
Fire
2005-05-03 16:23
2005.09.18
использование моделей из 3dMax


3-1123078921
angel_b
2005-08-03 18:22
2005.09.18
Что надо для выполнения обединения (SQL) с участием MEMO полей?


3-1122727589
ZAV
2005-07-30 16:46
2005.09.18
Сохранить кэш базы на диск


2-1123784955
Андрей Молчанов
2005-08-11 22:29
2005.09.18
Delphi опять глючит




   Наверх