Главная страница
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.017 c
15-1210575142
zdm77
2008-05-12 10:52
2008.06.22
Ошибка coreide100.bpl


15-1210145256
Галинка
2008-05-07 11:27
2008.06.22
Как вернуть массив строк из dll


2-1211976882
Dmitrij
2008-05-28 16:14
2008.06.22
Дан список, состоящий из чисел.


2-1211807673
JastI
2008-05-26 17:14
2008.06.22
MS-DOS кириллица


2-1211870709
Radgar
2008-05-27 10:45
2008.06.22
Мерцание при перемещении