Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.045 c
1-1195378114
MikeLevinN
2007-11-18 12:28
2008.06.22
TListView


3-1200556585
Alex_Storm
2008-01-17 10:56
2008.06.22
Отчет из БД в шаблон Excel


15-1210707132
Маэстро
2008-05-13 23:32
2008.06.22
Как я сэкономил 1,5к:)


2-1211961281
Alex Ford
2008-05-28 11:54
2008.06.22
Компоненты для отправки файла по почте


15-1210560946
Slider007
2008-05-12 06:55
2008.06.22
С днем рождения ! 11 мая 2008 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский