Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

Типизированный файл внутри *.exe   Найти похожие ветки 

 
Gonzalez   (2002-07-20 09:06) [0]

Проблема такая: есть типизированный файл (file of record...), дальше я его делаю *.res"ом и гружу в паямять когда необходимо...
Вопрос: как мне с ним работать, когда он в памяти ... или же необходимо выгружать его на диск ?


 
SPeller   (2002-07-20 15:36) [1]

Выгрузи в FileMapping


 
Gonzalez   (2002-07-21 08:08) [2]

А что это? К тому же я посмотрел - а у меня такой процедуры/функции(?) нет... Может она в более старших Дэльфях - у меня то 1-й ?..


 
SPeller   (2002-07-21 08:38) [3]

Смотри MS SDK - CreateFileMapping


 
Anatoly Podgoretsky   (2002-07-21 12:26) [4]

LockResource возвращает указатель на первый байт


 
Gonzalez   (2002-07-22 19:45) [5]

to SPeller:
MS SDK чего-то не видно, наверно, не установил... :(

to Anatoly:
OK, но после того как мы нашли-таки начальный байт, как затем
можно эти данные (например, массивы целых чисел) вызвать из памяти?..


 
Anatoly Podgoretsky   (2002-07-22 20:00) [6]

Так это и есть в памяти, первый байт твоих данных


 
DenKop   (2002-07-22 23:43) [7]

Самый оптимальный вариант выгрузить всё это дело в TMemoryStream, IMHO конечно! С TMemoryStream работа с файлом в памяти происходит также как если бы он находился на диске (TFileStream для файла на диске).


 
SPeller   (2002-07-23 06:55) [8]


> Gonzalez © (22.07.02 19:45)
> to SPeller:
> MS SDK чего-то не видно, наверно, не установил... :(

Пуск - Программы - Borland Delphi 6 - Help - MS SDK Help files - Win32 SDK Reference


 
Gonzalez   (2002-07-23 20:47) [9]

to SPeller:
Как я уже писал, у меня 1-й Delphi и ничего похожего на MS SDK нет

to Anatoly:
Я имею ввиду, как, зная первый байт файла данных в памяти, считать
оттуда, например, массив в конкретную переменную...

to DenKop:
Да я было сунулся со Stream"ами разбираться, а в D1 половина
(если не больше) методов и свойств не документирована :(


 
DenKop   (2002-07-23 23:01) [10]

Ну тогда скидывай всё в файл на винт и делай с ним всё, что нужно. Другого, более простого способа я не вижу, но это годится только если размеры файла не велики и нет особых требований к скорости его обработки.
P.S. А почему делается такой упор на D1?


 
Gonzalez   (2002-07-24 16:58) [11]

to DenKop:
OK! Тогда, плиз, если возможно напиши как это сделать, а то я уже устал об этом думать :(


 
DenKop   (2002-07-24 19:33) [12]

Примерно так:
var
h:THandle;
p:pointer;
FileHandle: THandle
begin
h:=FindResource(hInstance, "Имя_ресурса", "Тип_ресурса");
h:=LoadResource(hInstance, h);
p:=LockResource(h);
FileHandle:=FileCreate("Temp.tmp");
WriteFile(FileHandle,p,SizeOf(p));
FileClose(FileHandle);
UnLockResource(h);
FreeResource(h);
end;
Тип ресурса для нетипизированных файлов должен быть RCDATA.
Имя_ресурса - имя которое ты вписывал в rc файл при его компиляции.
После выполнения куска должен получить файл Temp.tmp в текущем каталоге.
P.S. Возможно код с ошибками, писал на "лету".


 
Anatoly Podgoretsky   (2002-07-24 19:46) [13]

Gonzalez © (23.07.02 20:47)
Я не обратил внимание на Д1, поэтому не могу сказать так ли там в Вин 3.1, мой ответ касался Вин32
Если так же, то ни в какую переменную ничего копировать не нужно, это и так переменная.


 
Gonzalez   (2002-07-28 09:03) [14]

to DenKop:
Большое сенькью за ответ, я бы сам до такого не докопался...
Только: не WriteFile, a FileWrite... :)


 
DenKop   (2002-07-31 01:57) [15]

Ну, я же предупреждал (см. P.S. 24.07.02 19:33)!



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

Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
1-35312
Filat
2002-07-26 20:16
2002.08.12
Есть *.zip, как узнать, что у него внутри?


1-35342
BOPOH
2002-07-30 08:35
2002.08.12
Как в своем компоненте отследить изменение заголовка ыормы


7-35481
sizmrebi
2002-05-23 17:32
2002.08.12
Matrix Printers


1-35297
Ира
2002-07-29 10:36
2002.08.12
Сообщение по Outlook...


14-35458
Michkarus
2002-07-18 22:04
2002.08.12
А че такое САБЖ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский