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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвентировать, String в Array[0..1000] of Char; 
:(
    Опции темы
Gnusss
  Дата 2.2.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет всем!

Как можно конвентировать String в Array[0..1000] of Char и обратно?

Заранее спасибо!
PM MAIL   Вверх
~FoX~
Дата 2.2.2005, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Gnusss
Стринг не может быть больше 256 символов (читай справку).
В массив чаров, строку можно запихать так (читай справку):
Код

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
s: string;
p: Array[0..255] of Char;
begin
 s:='ddddddddddddddddddddddddddddddddddd';
 I := Length(s);
 while I > 0 do
 begin
   p[I] := Char(s[I]);
   I := I - 1;
 end;
end;





--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Snowy
Дата 2.2.2005, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

var
 s: string;
 a: array[0..1000] of char;
 i: integer;
begin
 FillChar(a[0], SizeOf(a), 0);
 s:='Какая-то фраза';
 move(s[1], a[0], Length(s)); // туда
 s:=a; // обратно
end;


Это сообщение отредактировал(а) Snowy - 2.2.2005, 15:24
PM MAIL   Вверх
Marriage
Дата 2.2.2005, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Стринг не может быть больше 256 символов (


не понял, это как это не можнт ???
Может ShortString ????


Это сообщение отредактировал(а) Marriage - 2.2.2005, 15:19


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Snowy
Дата 2.2.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Стринг может быть до 2Гб. Короткий до 255.
А массив может быть 255 символов, но тект кончится гораздо раньше.
PM MAIL   Вверх
S.A.P.
Дата 2.2.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



МОжно организовать как строку с завершающим нулем, тогда конвертировать не надо, только ноль на конец добавить. Ограничений на размер нет.
PM MAIL   Вверх
Snowy
Дата 2.2.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Я уже написал рабочий код. Если кто может предложить проще - давайте.
- Завершающий ноль там есть, поскольку масив мы изначально зануляем.
- Ограничения есть, но достичь их в реальных условиях не так просто.
Вот пример этого кода в реальных условиях:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
 a: array[0..1000] of char;
begin
 FillChar(a[0], SizeOf(a), 0);
 s:='Какая-то фраза';
 move(s[1], a[0], Length(s)); // стринг в массив
 Button1.Caption:=a; // массив в стринг
end;

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


Творец
****


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

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



Цитата
Стринг не может быть больше 256 символов (читай справку).

из справки
AnsiString - 4 bytes to 2GB
PM MAIL   Вверх
~FoX~
Дата 2.2.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Код

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
begin
 s:=
'1234567890123456789012345678901234567890123456789012345678901234567890123456780123456789012345678901234567890123456789012345678901234567890123456789012345678
90123456789012345678901234567890123456789012345678901234567890123456789012345678
90123456789012345678901234567890123456789012345678901234567890123456789012345678
90123456789012345678901234567890123456789012345678901234567890123456789012345678
9012345678901234567890123456789012345678901234567890';
end;

~ 450 символов

Сообщение компилятора:
Цитата
String literals may have at most 255 elements


Че то я туплю сегодня smile :

Если так:
Код

s:='123456789012345678901234567890123456'+
'7890123456789012345678901234567'+
'890123456789012345678901234567890123456789012345678901234567890123456'+
'7890123456789012345678901234567890123456789012345678901234567890123456'+
'78901234567890123456789012345678901234567890123456789012345678901234567'+
'890123456789012345678901234567890123456789012345678901234567890123456789'+
'01234567890123456789012345678901'+'23456789012345789012345678901234567890';

То пожалуйсто.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Gnusss
Дата 3.2.2005, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем Спасибо!
Тема закрыта.
PM MAIL   Вверх
p0s0l
Дата 3.2.2005, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Цитата(Snowy @ 2.2.2005, 15:43)
Если кто может предложить проще - давайте.
Можно еще так, одной строкой, без FillChar:
Код
var
 s: string;
 a: array[0..1000] of char;

...

 Move (PChar(s)^, a, Length(s)+1);




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

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

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

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

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


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

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


 




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


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

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