Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PWideChar & FileMapping 
:(
    Опции темы
serious
Дата 8.4.2003, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 15.2.2003
Где: Пенза

Репутация: нет
Всего: 1



Есть функция, возвращает PWideChar. В этой функции читаю файл, используя FileMapping:
Код
if MappedData <> nil then
 for x := 1 to FileLength do
 begin
   Result := Result + PWideChar (MappedData);
   Inc (PWideChar(MappedData));
 end;

Delphi ругается.


--------------------
Я знаю то, что ничего не знаю, а некоторые не знают и этого.
PM MAIL   Вверх
stab
Дата 8.4.2003, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



А какой у тебя формат файла?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
serious
Дата 8.4.2003, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 15.2.2003
Где: Пенза

Репутация: нет
Всего: 1



Цитата(cully @ 8.4.2003, 09:44)
А какой у тебя формат файла?

Txt обычный в Unicode.


--------------------
Я знаю то, что ничего не знаю, а некоторые не знают и этого.
PM MAIL   Вверх
stab
Дата 8.4.2003, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



может так будет нормально:

function GetWideText(MappedData: Pointer; FileLength: Integer): WideString;
begin
SetString(Result, PWideChar(MappedData), FileLength);
end;

Я не пробовал, но должно работать с вероятностью 99% smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
serious
Дата 9.4.2003, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 15.2.2003
Где: Пенза

Репутация: нет
Всего: 1



Цитата(cully @ 8.4.2003, 11:00)
function GetWideText(MappedData: Pointer; FileLength: Integer): WideString;
begin
SetString(Result, PWideChar(MappedData), FileLength);
end;

Вызываю эту функцию в еще одной функции, вроде
if MappedData <> nil then
Result := GetWideText (MappedData, FileLength);
Функция того же типа.

Он грит, что ошибка, извини, парень, память не может быть 'read'


--------------------
Я знаю то, что ничего не знаю, а некоторые не знают и этого.
PM MAIL   Вверх
stab
Дата 10.4.2003, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



попробуй еще так, у мя работало:

Код

procedure TForm1.Button1Click(Sender: TObject);
const
 FileName = 'c:\test_uni.txt';

var
 FileHandle, FileMappingHandle: Integer;
 MappedData: Pointer;
 txt: WideString;

begin
FileHandle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 FileMappingHandle := CreateFileMapping(FileHandle, nil, PAGE_READONLY, 0, 0, nil);
 MappedData := MapViewOfFile(FileMappingHandle, FILE_MAP_READ, 0, 0, 0);


 // я делал файл с помощбю блокнота (WinXP) и сохранил в фомате Юникод
 SetString(txt, PWideChar(Integer(MappedData) + 2), (GetFileSize(FileHandle, nil) - 2) div 2);
 Memo1.Lines.Text := txt;


UnmapViewOfFile(MappedData);
 CloseHandle(FileMappingHandle);
 CloseHandle(FileHandle);
end;



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1035 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.