Главная страница
    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.043 c
15-1210704184
fics
2008-05-13 22:43
2008.06.22
Классификация ПО для Web-технологий


15-1210615430
No_Dead
2008-05-12 22:03
2008.06.22
php input readonly


15-1210348051
wp2
2008-05-09 19:47
2008.06.22
Zyxel vs. D-Link (срочный вопрос)


3-1200384713
developer
2008-01-15 11:11
2008.06.22
collations в MS SQL 2005


2-1211821514
DJ_UZer
2008-05-26 21:05
2008.06.22
Добавить ссылку в меню файла "отправить"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский