Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Integer -> PChar, как? 
:(
    Опции темы
RinOSpro
Дата 24.1.2008, 22:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как перевести Integer в PChar?
  Вверх
Qu1nt
Дата 24.1.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 18
Всего: 50



Код

PChar(i);

PM MAIL   Вверх
kemiisto
Дата 24.1.2008, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 16
Всего: 160



Может так:
Код

PChar(IntToStr(i))



--------------------
PM MAIL WWW GTalk Jabber   Вверх
RinOSpro
Дата 25.1.2008, 11:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Qu1nt - вылетает ошибка.
kemiisto - пишу без string и динамических массивов, IntToStr не подойдет.
  Вверх
and85
Дата 25.1.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.12.2007

Репутация: нет
Всего: нет



Код

P := PChar (I);

вот пример - доказательство, что работает
Код



procedure TForm4.FormCreate(Sender: TObject);
var
  I: Integer;
  P: PChar;
begin
  I := 1;

  P := PChar (I);

  ShowMessage(IntToStr(Integer(P)));

end;
 
как и положенно 1 выводит


Это сообщение отредактировал(а) and85 - 25.1.2008, 12:32
PM MAIL   Вверх
Alexeis
Дата 25.1.2008, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Код

function IntToC_str(val : Integer; s : PChar; maxchars : integer) : boolean;
var
  i, dec, fr, strpos : Integer;
  ch : Char;
begin
  Result := False;
  dec    := abs(val);
  strpos := 0;
  if (maxchars > 0)
  then
    repeat
      fr  := dec mod 10;
      dec := dec div 10;
      s[strpos] := Chr(Ord('0') + fr);
      Inc(strpos);
      if (strpos >= maxchars-2)
      then
        exit;
    until (dec = 0);
  else
    Exit;

  if (val < 0)
  then
    begin
      s[strpos] := '-';
      Inc(strpos);
    end;
  s[strpos] := #0;

  for i := 0 to strpos div 2 - 1
  do
    Begin
      ch := s[i];
      s[i] := s[strpos - i - 1];
      s[strpos - i - 1] := ch;
    end;
  Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s : array [0..127] of Char;
begin
  if IntToC_str(-4523, s, 128)
  then
    Edit1.Text := s;
end;


Это сообщение отредактировал(а) Alexeis - 25.1.2008, 12:55


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
RinOSpro
Дата 25.1.2008, 15:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Alexeis  спасибо. Не понял как это работает но это работает smile
  Вверх
Snowy
Дата 25.1.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код

var
  i: integer;
  s: string;
  p: PChar;
begin
  i := 12345;
  str(i, s);
  p := PChar(s);


PM MAIL   Вверх
Alexeis
Дата 25.1.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(RinOSpro @  25.1.2008,  14:23 Найти цитируемый пост)
Не понял как это работает но это работает

  Суть в том, что на каждом шаге число делиться на 10 и извлекается остаток от деления, который по сути одна цифра. Цифре ставиться в соответствии символ, но поскольку цифры извлекаются в обратном порядке, то и в строку они тоже попадают в обратном порядке (сначала младшие, потом старшие), поэтому вконце я меняю порядок символов на обратный. Строка должна быть достаточной длины, чтобы вместить число + знак иначе прямая дорога а Access Violation. Поскольку модулем SysUtils тут и не пахнет, то try / except тоже недоступна. 




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0862 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.