1 Текст длинный символов 300
5 Тоже текст числа в начале ключи идут не попорядку
8 Маленький текст
Хранение в Массиве строк с более 255 символами
Имеется два списка вида (в принципе как надо такой и сделаем)
Код:
И в таком духе второй тока с подобными ключами.
В массив при разработке не влазят пишут мол больше 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);
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 файла на маленький скриптик.
Можно как нить это все в один закинуть файл или как максимум в два нечитаемых
Если такое решение подойдет, то опсание здесь.
Именно хранить, а не получать
В Delphi, в отличие от Паскаля, длина string ограничена только размером свободной памяти!
Цитата: Alex_soldier
Легко и непринужденно!
В Delphi, в отличие от Паскаля, длина string ограничена только размером свободной памяти!
В Delphi, в отличие от Паскаля, длина string ограничена только размером свободной памяти!
Код:
local[91]:='Неправильный выбор транзитной сети.';
local[95]:='Неправильное или непредусмотренное сообщение.\nПоявляется только тогда, когда в классе недействительных сообщений не возникает других значений.';
local[96]:='Отсутствует обязательный информационный элемент.\nОборудование, создающее это значение, получило сообщение, не содержащее информационного элемента, который должен присутствовать в сообщении до того, как оно может быть подвергнуто обработке.';
local[97]:='Тип сообщения не существует или не реализован.\nОборудование, создающее это значение, получило сообщение, тип которого ему не знаком, потому что это сообщение либо не расшифровано, либо расшифровано, но не введено в эксплуатацию на данном оборудовании.';
local[98]:='Сообщение несовместимо с состоянием вызова или его тип не существует или не введен в эксплуатацию.\nОборудование, создающее это значение, получило сообщение, которое оно рассматривает как не допустимое в состоянии вызова; или же было получено сообщение STATUS, указывающее на несовместимое состояние вызова.';
local[99]:='Информационный элемент не существует или не реализован.\nОборудование, создающее это значение, получило сообщение, включающее неопознанные информационные элементы, так как идентификатор информационного элемента не определен, а если определен, то не введен в эксплуатацию на инструменте, создающем новое значение. Однако информационный элемент не обязательно должен присутствовать в сообщении для того, чтобы дать возможность оборудованию, создающему данное значение, провести его обработку.';
local[100]:='Сообщение содержит некорректный информационный элемент.\nОборудование, создающее данное значение, получило информационный элемент, который оно ввело в эксплуатацию. Однако оборудование было не в состоянии ввести в эксплуатацию код, так как одно или несколько полей были неправильно закодированы.';
local[95]:='Неправильное или непредусмотренное сообщение.\nПоявляется только тогда, когда в классе недействительных сообщений не возникает других значений.';
local[96]:='Отсутствует обязательный информационный элемент.\nОборудование, создающее это значение, получило сообщение, не содержащее информационного элемента, который должен присутствовать в сообщении до того, как оно может быть подвергнуто обработке.';
local[97]:='Тип сообщения не существует или не реализован.\nОборудование, создающее это значение, получило сообщение, тип которого ему не знаком, потому что это сообщение либо не расшифровано, либо расшифровано, но не введено в эксплуатацию на данном оборудовании.';
local[98]:='Сообщение несовместимо с состоянием вызова или его тип не существует или не введен в эксплуатацию.\nОборудование, создающее это значение, получило сообщение, которое оно рассматривает как не допустимое в состоянии вызова; или же было получено сообщение STATUS, указывающее на несовместимое состояние вызова.';
local[99]:='Информационный элемент не существует или не реализован.\nОборудование, создающее это значение, получило сообщение, включающее неопознанные информационные элементы, так как идентификатор информационного элемента не определен, а если определен, то не введен в эксплуатацию на инструменте, создающем новое значение. Однако информационный элемент не обязательно должен присутствовать в сообщении для того, чтобы дать возможность оборудованию, создающему данное значение, провести его обработку.';
local[100]:='Сообщение содержит некорректный информационный элемент.\nОборудование, создающее данное значение, получило информационный элемент, который оно ввело в эксплуатацию. Однако оборудование было не в состоянии ввести в эксплуатацию код, так как одно или несколько полей были неправильно закодированы.';
Вот как такой массив вставить.
Можно но гиморно.
Можно потому что строки есть нультерминальные (или как там оно правильно называется), а гиморно потому что нули изнутри убирать надо.
Код:
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;
...
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;
Хотелось бы это в код вставить или спрятать от Юзера
Код:
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;
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;
Я чет проблемы не понял... Не легче ли промапить файлик(и) в память и работать как с бинарными даными??
Направь на путь =)
При помощи API-функций CreateFileMapping и MapViewOfFile. Подробности в мсдн или любой другой документации по Win32.