Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Pointer в string


Res ©   (2008-05-19 11:12:00) 

Здравствуйте. Подскажите пожалуйста как Pointer перевести в string.

 Htemp,HResInfo,HGlobal: THandle;
 Ptr: Pointer; Size: Longint;
 temp,temp3:^string;
 temp2:string;
begin
 HResInfo := FindResource(Htemp, PAnsiChar(ResName), PAnsiChar(ResType));
 if HResInfo = 0 then exit;
 HGlobal := LoadResource(Htemp, HResInfo);
 if HGlobal = 0 then exit;
 ptr:=LockResource(HGlobal);
 size:=SizeOfResource(HTemp, HResInfo);
 new (temp3);
 temp3:=@temp2;
 temp3:=ptr;
 messagebox(0,PAnsiChar(temp2),'',0);
Данный код показывается пустоту :( непонимаю.

Заранее благодарен.


Ega23   (2008-05-29 11:02:00) [1]


> Подскажите пожалуйста как Pointer перевести в string.


function FiletoString(const FileName : string) : string;
var
 fs : TFileStream;
 ss : string;
begin
 Result := '';
 if not FileExists(FileName) then Exit;
 fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
 try
   fs.Position := 0;
   SetLength(Result, fs.Size);
   fs.ReadBuffer(PChar(Result)^, fs.Size);
 finally
   fs.Free;
 end;
end;


пример, конечно, дурной, ибо на самом деле файл можно и более приятными способами читать.
Но про "pointer" в "string" - демонстрирует.


TForumHelp   (2008-05-29 10:55:00) [2]


> Данный код показывается пустоту :( непонимаю.


а что он еще должен показывать? имхо - бред полнейший.


Хитрий Лис   (2008-05-19 11:52:00) [3]


Format
Format strings

F1


palva   (2008-05-19 11:30:00) [4]


> Немогли бы Вы подсказать, как исправить?

А что вы хотите, чтобы было? Если своими словами. Ваш код лично мне непонятен. Почему переменной p1 присваивается значение, которое затирается в следующей же строчке?


Сергей М.   (2008-05-19 11:26:00) [5]

Какие-то непонятные пляски с бубном ..

Htemp,HResInfo,HGlobal: THandle;
pStr: PChar;
Size: Longint;
Str: String;
...
HResInfo := FindResource(Htemp, PAnsiChar(ResName), PAnsiChar(ResType));
if HResInfo = 0 then exit;
HGlobal := LoadResource(Htemp, HResInfo);
if HGlobal = 0 then exit;
// size:=SizeOfResource(HTemp, HResInfo); //размер нужен, если строка не нуль-терминированная
pStr:=LockResource(HGlobal);
// SetLength(Str, size);
// Move(pStr^, PChar(Str)^, Size); //для случая не нуль-терминированной строки

Str := StrPas(pStr); //подразумевается, что в ресурсе хранится нуль-терминированная ANSI-строка

messagebox(0,PChar(Str),'',0);


Res   (2008-05-19 11:20:00) [6]

Просто был пример:

var
 p1: ^string;
 s1: string;
begin
 s1 := 'NotTest';
 new(p1);
 p1 := @s1;
 p1^ := 'Test';
 Label1.Caption := s1

Немогли бы Вы подсказать, как исправить?


Amoeba   (2008-05-19 11:18:00) [7]


> temp,temp3:^string;

Указатель на указатель. Такого делать не надо!

> new (temp3);
>  temp3:=@temp2;
>  temp3:=ptr;

Вообще бред.


Наверх

Титульная страница Поиск, карта сайта Написать письмо