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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.02.2009, 18:50   #1
Geddar
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 88
Вопрос Функция результат которой массив

Подскажите как написать функцию результатом работы которой получаеться массив заранее не известной длинны или хотябы изестной, вот что я набросал, но к сожалению вариант не рабочий, матюгаеться на первую же строчку, само тело функции даже не отлаживал, но надеюсь суть будет ясна.

Код:
function stm (s:string;n:integer):array [1..n] of integer;// уже в этой строке ошибка
var
i:integer;
begin
for i:=1 to n do
stm[i]:=ord(S[i]);

end;
Geddar вне форума
Старый 11.02.2009, 18:52   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
function stm (s:string;n:integer):array [1..n] of integer;// уже в этой строке ошибка
Необходимо предварительно объявить тип:
Код:
type tmass=array [1..n] of integer;
function stm (s:string;n:integer):tmass;
Arigato вне форума
Старый 11.02.2009, 19:22   #3
Geddar
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 88
По умолчанию

Пропускает если задать длинну массива, а если поставить n то не пропускает, проблема в том что n заранее не известное число равное длинне строки которая передаеться функции, есть решение данной проблемы?
Geddar вне форума
Старый 11.02.2009, 19:29   #4
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

Динамические массивы - вот решение.
Вот 1 ссылка
вот вторая ссылка
Вот 3 ссылка
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума
Старый 11.02.2009, 19:29   #5
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

задай заведомо большое число ,например, 6000
и заведи внешнюю переменную в которой будет реальная длинна обрабатываемой строки и пусть функция stm(s:string;n:integer):tmass; "знает" с каким именно количеством символов работать ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума
Старый 11.02.2009, 19:38   #6
Geddar
Пользователь
 
Регистрация: 06.05.2008
Сообщений: 88
По умолчанию

Спасибо за помощь
Geddar вне форума
Старый 03.04.2010, 19:18   #7
Fr_DWARF
 
Регистрация: 04.07.2009
Сообщений: 8
По умолчанию

Есть 2 модуля Unit1 и projects

Листинг Unit1
Код:
type
 project=array of record
   name:string[50];
   en,me,el:byte;
   op:string[100];
   end;
 n_a=project;

procedure Rozdil(nomer:string); 
begin
 SetLength(n_a,n1);
 n_a:=na();
end;
Листинг модуля projects
Код:
unit projects;

interface

const
 n1=7;

type
 project=array of record
   name:string[50];
   en,me,el:byte;
   op:string[100];
   end;

 n_a=project;

 function na():n_a;

implementation

uses Unit1, Dialogs, SysUtils;

function na():n_a; 
var i:byte;
begin
try
 SetLength(Result,n1);
 for i:=0 to n1-1 do result[i].en:=i;
except
 ShowMessage('Ошибка в блоке');
 Abort;
 end;
end;

end.
В строке SetLength(n_a,n1); "ошибка "(" expected but "," found"
Почему?
Fr_DWARF вне форума
Старый 03.04.2010, 19:32   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас же нет переменной типа project
а у вас псевдоним типа задан.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 03.04.2010, 19:43   #9
Fr_DWARF
 
Регистрация: 04.07.2009
Сообщений: 8
По умолчанию

Если в Unit1 добавить var n_aroject;
вместо type n_a=project;
то в строке n_a:=na(); возникает ошибка "Incopatible types"
Fr_DWARF вне форума
Старый 03.04.2010, 21:15   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
 function na():project;

var n_a:project;
намек ясен?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
результат запроса Ko$tello БД в Delphi 7 18.04.2012 12:13
Создание надстроек. Функция, возвращающая массив значений Jarik Microsoft Office Excel 6 13.01.2009 23:11
Результат прогресса Stilet Свободное общение 10 15.04.2008 13:03
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50