Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Внизкак получить строку по указателю Найти похожие ветки
← →
redlord (2006-06-17 18:06) [0]всем привет
у меня есть переменная тип integer
в ней лежит указатель на строку (string), как получить строку?
← →
tButton © (2006-06-17 18:16) [1]удивительно, а как он туда поместился?
← →
palva © (2006-06-17 18:25) [2]
{$APPTYPE CONSOLE}
var
s1, s2: String;
i: Integer;
Begin
s1 := "Proba";
i := Integer(@s1);
s2 := PString(i)^;
WriteLn(s2); // Proba
End.
← →
StriderMan © (2006-06-17 18:38) [3]
> удивительно, а как он туда поместился?
а в чем сложность, те же 4 байта.
я иногда пользуюсь TComponent.Tag для хранения указателей на все что угодно
← →
tButton © (2006-06-17 18:54) [4]
> а в чем сложность, те же 4 байта.
но значимых битов только 31 если я всё правильно перепутал?
выходит, что половина адресов не влезает
или у машины на этот счёт особое мнение?
← →
Пусик © (2006-06-17 19:04) [5]> но значимых битов только 31
Почему?
← →
Virgo_Style © (2006-06-17 19:04) [6]tButton © (17.06.06 18:54) [4]
Что такое "(не)значимый бит" применительно к указателю?
← →
sniknik © (2006-06-17 19:06) [7]WParam, LParam в TMessage (параметр сообщений системы) тоже интежер, но тем не менее указатели в них при нужде передают
> но значимых битов только 31 если я всё правильно перепутал?
попутал, знак тоже значимый... (если это ты его "отнял")
← →
tButton © (2006-06-17 19:13) [8]ну да =)
фактически Integer принимает значения от -2^31 до +(2^31-1)
хотя если машина интерпретирует последовательность бит не обращая внимания на тип переменной, то вопрос снимаю =)
← →
Asail (2006-06-17 19:15) [9]
> хотя если машина интерпретирует последовательность бит не
> обращая внимания на тип переменной
Если бы обращала - фиг она бы тебе дала в интегер указатели на строки пихать :-)
← →
Asail (2006-06-17 19:18) [10]А, вообще, не нравится мне такой подход. Вот, к примеру, захочешь перенести сей код (когда-нибудь) на 64-битную операционку... ИМХО - весело будет...
← →
sniknik © (2006-06-17 19:22) [11]> хотя если машина интерпретирует последовательность бит не обращая внимания на тип переменной
машина зачастую даже не догадывается о типах в языке... а большинство делфевских типов это просто "разграничители" для контроля программистов. с этим можно делать то и интерпретировать так, а вот с этим другое и по другому... хотя в машинном представлении это одно и тоже. (пример тот же pointer-integer, byte-char, int64-currency)
← →
DevilDevil © (2006-06-17 23:25) [12]Господи, смилуйся над этими грешниками...
function GetStr(P : integer) : string;
begin
Result := pchar(P);
end;
← →
redlord (2006-06-18 12:30) [13]to DevilDevil
если я не ошибаюсь то перед применением ентой функции
переменную стринг нужно подготовить тобиш указать ей размер
а это не всегда возможно так как он не известен
var s:string[255];
begin
s:=getstr(p);
...
end;
← →
DevilDevil © (2006-06-18 14:20) [14]> если я не ошибаюсь
Ошибаешься, не указывай длинну, если этого не требуется
← →
ЮЮ © (2006-06-19 03:49) [15]string это и есть указатель на "строку". Integer сюда ещё зачем приплетать? Более того, с подсчетом ссылок. И если получить указатель на локальную string, как у тебя, то очень скоро это ссылка будет "битой"
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c