Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2010, 18:21   #1
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
Злость String большого размера, более 255 String[255]

привет всем, У меня есть запись типа,

Код:
type
 TCMD = record
  Command   : string[255];
  AData     : string[255];
 end;

var 
 CMD : TCMD;
Но как сделать, чтобы пройти этот предел,
ну например я хачу туда вставить целый техт, но у мея есть только 255 символов в етом String.

Код:
CMD.AData := '23423f3rt34tg '; //более чем 255 нужно
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');
bitSoft вне форума Ответить с цитированием
Старый 28.03.2010, 18:33   #2
Deamonig
Форумчанин
 
Аватар для Deamonig
 
Регистрация: 19.09.2009
Сообщений: 166
По умолчанию

сделай
Код:
S:array[1..n] of char
или же
Код:
S:array[1..n] of String
Deamonig вне форума Ответить с цитированием
Старый 28.03.2010, 18:33   #3
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Так зачем вы поставили ограничение на 255 ?
Если мне не изменяет память, то в string можно всунуть аж 2^31 символа...
W0LF вне форума Ответить с цитированием
Старый 28.03.2010, 18:39   #4
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от W0LF Посмотреть сообщение
Так зачем вы поставили ограничение на 255 ?
Если мне не изменяет память, то в string можно всунуть аж 2^31 символа...
да, а если сохранить в File of Cmd то на чтение ничего не будет,
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');
bitSoft вне форума Ответить с цитированием
Старый 28.03.2010, 18:49   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. Обсуждалось (не думайте, что Вы первый такой)
2. Используйте String
3. Чтение/Запись - используйте Blockread/Blockwrite указывая буфер = Pointer(String-Var)^, размер которого = Length(String) * SizeOf(Char) (для Unicode версии Delphi, SizeOf(WideChar))
BOBAH13 вне форума Ответить с цитированием
Старый 28.03.2010, 18:53   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Delphi Language Reference
String types
Цитата:
ShortString 255 characters 2 to 256 bytes backward compatibility
AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc.
WideString ~2^30 characters 4 bytes to 2GB Unicode characters; multi-user servers and multi-language applications
mihali4 вне форума Ответить с цитированием
Старый 28.03.2010, 18:56   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от W0LF Посмотреть сообщение
Так зачем вы поставили ограничение на 255 ?
Если мне не изменяет память, то в string можно всунуть аж 2^31 символа...
Можно, тип string компилятором автоматически приводится к типу AnsiString...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 28.03.2010, 18:58   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

можно вот так:
Код:
type
 TCMD = record
  Command   : string[255];
  AData     : string[255];
  BigStr    : array[1..32000] of char;
 end;
но вообще, а зачем пользоваться типом record, если он не удовлетворяет Вашим задачам? )

TFileStream + своя структура позволят Вам писать Что Угодно и Как Угодно.

________________

пока уходил... тут уже много написали..
тогда добавлю.
если с переменной типа TCMD надо просто работать в программе,
то действительно:
Код:
type
 TCMD = record
  Command   : AnsiString;
только типизированный файл file of TCMD создать не получится..
но, может, оно и не нужно в данной задаче!


Цитата:
Сообщение от Grag
Можно, тип string компилятором автоматически приводится к типу AnsiString...
кстати, это не совсем так. Зависит от опции компилятора: {$H+} или {$H-} или (что тоже самое) Project - Options - Compiler - "Huge Strings"

Последний раз редактировалось Serge_Bliznykov; 28.03.2010 в 19:07.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.03.2010, 19:08   #9
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
можно вот так:
Код:
type
 TCMD = record
  Command   : string[255];
  AData     : string[255];
  BigStr    : array[1..32000] of char;
 end;
но вообще, а зачем пользоваться типом record, если он не удовлетворяет Вашим задачам? )

TFileStream + своя структура позволят Вам писать Что Угодно и Как Угодно.

________________

пока уходил... тут уже много написали..
тогда добавлю.
если с переменной типа TCMD надо просто работать в программе,
то действительно:
Код:
type
 TCMD = record
  Command   : AnsiString;
только типизированный файл file of TCMD создать не получится..
но, может, оно и не нужно в данной задаче!
Я делаю это для отправки через Socket, SendBuffer(CMD,SizeOf(CMD));
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');
bitSoft вне форума Ответить с цитированием
Старый 28.03.2010, 19:45   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну тогда
Код:
type
 TCMD = record
...
    Buffer : array[1.. N] of byte (или of char - как Вам удобнее)
решат вашу проблему...
Кстати, а почему не объявить просто массив:
var Buf : array[1..N] of byte;
и не использовать его?!
SendBuffer(Buf,СколькоБайтИспользов аноВБуфере);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
String literals may have at most 255 elements (рег. выражения) djemov Общие вопросы Delphi 3 03.11.2009 19:32
Строка длинною более 255 символов Kuzya59 Общие вопросы Delphi 7 27.09.2009 20:29
Длина строки в си : char string[255] Mixasik Помощь студентам 1 26.11.2008 20:33
SQl и поля с длино более 255 символов JordanS БД в Delphi 16 21.06.2008 08:13
stringgrid поместить строку более 255 символов SeЯgey Помощь студентам 2 07.05.2008 16:41