![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;
Вообще бред.