Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Хранение в Массиве строк с более 255 символами

7.6K
20 ноября 2007 года
Slawka
18 / / 14.05.2005
Проблема такая.

Имеется два списка вида (в принципе как надо такой и сделаем)

 
Код:
1 Текст длинный символов 300
5 Тоже текст числа в начале ключи идут не попорядку
8 Маленький текст


И в таком духе второй тока с подобными ключами.
В массив при разработке не влазят пишут мол больше 255 знаков.
Сейчас проблему решили чтением из файлов (каждому списку свой файл) и дальше его парсим
Код:
AssignFile(F,File_Name);
    Reset(F);

    while not EOF(F) do
  begin
        Readln(F, S);
        Buf:=Explode(':=:',S);
     if(strtoint(Buf[0])=strtoint(Edit1.Text)) then
      begin
        Form2.Memo1.Lines.Text:='';
        Form2.Memo1.Lines.Add('#'+Buf[0]);
        Form2.Memo1.Lines.Add(StringReplace(Buf[1],'\n',#13,[rfReplaceAll, rfIgnoreCase]));
      end;
    end;
    CloseFile(F);


Так вот как-то это не правильно давать юзеру открытые файлы даи много выходит 3 файла на маленький скриптик.


Можно как нить это все в один закинуть файл или как максимум в два нечитаемых
13K
20 ноября 2007 года
Alex_soldier
102 / / 29.01.2007
У меня есть библиотечка подпрограмм для представления произвольных структур данных в виде string с разделителями.
Если такое решение подойдет, то опсание здесь.
7.6K
21 ноября 2007 года
Slawka
18 / / 14.05.2005
И как ты в string в коде собрался хранить значения более 255 символов.
Именно хранить, а не получать
13K
21 ноября 2007 года
Alex_soldier
102 / / 29.01.2007
Легко и непринужденно!
В Delphi, в отличие от Паскаля, длина string ограничена только размером свободной памяти!
7.6K
21 ноября 2007 года
Slawka
18 / / 14.05.2005
Цитата: Alex_soldier
Легко и непринужденно!
В Delphi, в отличие от Паскаля, длина string ограничена только размером свободной памяти!



 
Код:
local[91]:='Неправильный выбор транзитной сети.';
local[95]:='Неправильное или непредусмотренное сообщение.\nПоявляется только тогда, когда в классе недействительных сообщений не возникает других значений.';
local[96]:='Отсутствует обязательный информационный элемент.\nОборудование, создающее это значение, получило сообщение, не содержащее информационного элемента, который должен присутствовать в сообщении до того, как оно может быть подвергнуто обработке.';
local[97]:='Тип сообщения не существует или не реализован.\nОборудование, создающее это значение, получило сообщение, тип которого ему не знаком, потому что это сообщение либо не расшифровано, либо расшифровано, но не введено в эксплуатацию на данном оборудовании.';
local[98]:='Сообщение несовместимо с состоянием вызова или его тип не существует или не введен в эксплуатацию.\nОборудование, создающее это значение, получило сообщение, которое оно рассматривает как не допустимое в состоянии вызова; или же было получено сообщение STATUS, указывающее на несовместимое состояние вызова.';
local[99]:='Информационный элемент не существует или не реализован.\nОборудование, создающее это значение, получило сообщение, включающее неопознанные информационные элементы, так как идентификатор информационного элемента не определен, а если определен, то не введен в эксплуатацию на инструменте, создающем новое значение. Однако информационный элемент не обязательно должен присутствовать в сообщении для того, чтобы дать возможность оборудованию, создающему данное значение, провести его обработку.';
local[100]:='Сообщение содержит некорректный информационный элемент.\nОборудование, создающее данное значение, получило информационный элемент, который оно ввело в эксплуатацию. Однако оборудование было не в состоянии ввести в эксплуатацию код, так как одно или несколько полей были неправильно закодированы.';


Вот как такой массив вставить.
276
21 ноября 2007 года
Rebbit
1.1K / / 01.08.2005
Обое вы правы.
Можно но гиморно.
Можно потому что строки есть нультерминальные (или как там оно правильно называется), а гиморно потому что нули изнутри убирать надо.
13K
21 ноября 2007 года
Alex_soldier
102 / / 29.01.2007
Код:
uses spo;
...
var
  sep: char;
  myStr: string; // Полагаю, массив local уже описан
  i: integer;
begin
  sep := #1;   // Чтобы не было совпадений (можно и другой взять)
  myStr := ''; // Обнулили

  for i := 91 to 100 do
    myStr := myStr + sep + local; // Запихали (можно сохранять в файл или еще куда)

  local[95] := GetValueByIndex(myStr, 5); // Теперь можем вынуть любую
//local := GetValueByIndex(myStr, i-90);
end;
7.6K
21 ноября 2007 года
Slawka
18 / / 14.05.2005
На текущий момент все данные забираются их текстовых файлов и парсятся
Хотелось бы это в код вставить или спрятать от Юзера
13K
21 ноября 2007 года
Alex_soldier
102 / / 29.01.2007
Простейшая замена символов подойдет?
Код:
const
  a1 = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя ';
  a2 = 'прстуфхцчшщъыьэюя абвгдеёжзийклмно';
var
  j: integer;
...
  for i := 1 to length(myStr) do
  begin
    j := pos(''+myStr, a1);
    if(j>0)then
      myStr := a2[j];
  end;
255
21 ноября 2007 года
Dart Bobr
1.4K / / 09.04.2004
Я чет проблемы не понял... Не легче ли промапить файлик(и) в память и работать как с бинарными даными??
7.6K
22 ноября 2007 года
Slawka
18 / / 14.05.2005
Подскажи как ?
Направь на путь =)
255
22 ноября 2007 года
Dart Bobr
1.4K / / 09.04.2004
При помощи API-функций CreateFileMapping и MapViewOfFile. Подробности в мсдн или любой другой документации по Win32.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог