Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Вниз2мерный стринговый массив Найти похожие ветки
← →
margel (2004-11-07 22:20) [0]Здравствуйте мастера!
Подскажите пожалуйста такой вопрос, как сделать такую вещь, создать 2х мерный массив, и наполнить его любыми стринговыми символами, а потом вернуть любой символ 2го столбца, относительно первого. Сколько не делаю, все ошибка в блоке таком то .. :(
Т.е.
function return_mass(a:integer): string;
var
i: integer;
mass: array of array of string;
begin
SetLength(mass, 2, 200);
for i:=1 to 200 do
begin
mass[1,i]:=IntToStr(i);
mass[2,i]:=IntToStr(Random(100))
end;
Result:=mass[2,a];
end;
procedure Tfm.Button1Click(Sender: TObject);
begin
Showmessage(return_mass(15));
end;
И еще, вопрос, из первого, как наполнить массив не в цикле, а в ручную, в теле этой же ф-и, т.е.
1 - 5455
2 - 9998
3 - 4566
4 - 6878
....
Тоже с этим разобраться не могу, в PHP это элементарно реализуется, а тут прямо, с 5 вечера сижу, 5й час :(
Заранее всем спасибо.
← →
margel (2004-11-07 22:21) [1]Скажу ещё, массив обыкновенный, 2 столбика, и 200 строчек. (в данном примере)
← →
YurikGL © (2004-11-07 22:24) [2]
> margel (07.11.04 22:20)
Не проще
> mass: array of array of string;-> mass array[1..2,1..200] of string?
← →
YurikGL © (2004-11-07 22:27) [3]Кстати, у меня такое чувство, что TStringList тебе больше подойдет...
Какая задача стоит то?
← →
GuAV © (2004-11-07 22:33) [4]margel (07.11.04 22:20)
for i:=1 to 200 do
begin
mass[1,i]:=IntToStr(i);
mass[2,i]:=IntToStr(Random(100))
У дин массивов первый элемент 0.
Т.е.
0 to 1999
а лучше
Low(mass) to High(mass)
← →
KilkennyCat © (2004-11-07 22:36) [5]я бы не так делал.
1) если данные - цифры, пусть массив и будет integer, преобразование делать при уже дальнейшем использовании.
2) mass[1,i]:=IntToStr(i); - возможно, лишнее, если потом не подрезумевается перетасовка элементов массива, с сохранением информации о порядковом номере.
а ошибка простая - SetLength(mass, 2, 200) делает массив [0..1, 0..199]
← →
KilkennyCat © (2004-11-07 22:37) [6]ну вот, опять опередили...
← →
margel (2004-11-08 11:10) [7]Спасибо за ответы!
Хочу сделать ф-ю, возвращающую одно значение, относительно другого. Т.е. есть "таблица", в 2 колонки. Строк до 1000 и чуть более.
Сейчас, с вашей помощью сделал так, и все работает, но реализация, конечно, оставляет желать лучшего :)
function return_mass(a:string): string;
var
i: integer;
mass: array[1..2,1..200] of string;
begin
mass[1,1]:="ee1"; mass[2,1]:="rr1";
mass[1,2]:="ee2"; mass[2,2]:="rr2";
mass[1,3]:="ee3"; mass[2,3]:="rr3";
mass[1,100]:="ee100"; mass[2,100]:="rr100";
mass[1,177]:="ee177"; mass[2,177]:="rr177"; //и так может до 1000 строк :(
for i:=1 to 200 do
if a=mass[1,i]
then
begin
Result:=mass[2,i];
break;
end
else
Result:="No return";
end;
procedure Tfm.Button1Click(Sender: TObject);
begin
Showmessage(return_mass("ee177")); //вернет "rr177"
end;
← →
KilkennyCat © (2004-11-08 11:17) [8]mass[1,1]:="ee1"; mass[2,1]:="rr1";
mass[1,2]:="ee2"; mass[2,2]:="rr2";
mass[1,3]:="ee3"; mass[2,3]:="rr3";
mass[1,100]:="ee100"; mass[2,100]:="rr100";
mass[1,177]:="ee177"; mass[2,177]:="rr177";
я бы это заменил на
for i := 1 to 1000 do begin
mass[1,i] := "ee"+inttostr(i);
mass[2,i] := "rr"+inttostr(i);
end;
← →
margel (2004-11-08 11:35) [9]KilkennyCat © (08.11.04 11:17)
Да, спасибо, но тут слова для теста, реально, слова другие и совсем без цифр. А вот вопрос, можно ли в функции отсавить только поиск в массиве, а сам массив вынести в др. место? Я бы вынес в OnCreate формы, но сам этот модуль реализован в отдельном юните, и OnCreate нет...
Сейчас получается, при каждом обр. к ф-и я определяю весь массив заново, хотя его достаточно вбить 1 раз, при загрузке приложения и все...
← →
KilkennyCat © (2004-11-08 11:41) [10]
> margel (08.11.04 11:35) [9]
конечно, можно. Просто объявить его глобально, а не в функции. Если же он вообще очень редко меняется, то имеет смысл его забить в файл данных или ресурс, а в программе предусмотреть только возможность изменения.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.052 c