Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.22;
Скачать: CL | DM;

Вниз

Pointer в string   Найти похожие ветки 

 
Res   (2008-05-19 11:12) [0]

Здравствуйте. Подскажите пожалуйста как 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);
Данный код показывается пустоту :( непонимаю.

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


 
Amoeba ©   (2008-05-19 11:18) [1]


> temp,temp3:^string;

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

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

Вообще бред.


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

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

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

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


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

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

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);


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


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

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


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


Format
Format strings

F1


 
TForumHelp ©   (2008-05-29 10:55) [6]


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


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


 
Ega23 ©   (2008-05-29 11:02) [7]


> Подскажите пожалуйста как 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" - демонстрирует.



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

Текущий архив: 2008.06.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
15-1210696367
Пробегал2...
2008-05-13 20:32
2008.06.22
"-1" vs "NOT(0)"


15-1210112553
Дрёма
2008-05-07 02:22
2008.06.22
Результат функции всегда по-умолчанию нулевой?


15-1210622873
kolos
2008-05-13 00:07
2008.06.22
Прогнозирование вероятности


2-1211779884
UNO-84
2008-05-26 09:31
2008.06.22
DBGrid и ListView!


2-1211880109
Igor_34
2008-05-27 13:21
2008.06.22
Масштабирование формы - разрешение экрана