Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 14.06.2009, 22:29   #1
RNT
Пользователь
 
Аватар для RNT
 
Регистрация: 15.09.2008
Сообщений: 59
По умолчанию Помогите определить тип функции

Делаю функцию в Delphi 7, функцию которая принимает строку текста и выкидывает из нее пробелы , ошибка в первой строке и в предпоследней , [Error] Unit1.pas(48): Incompatible types: 'String' and 'Array' , в объявлении функции я написал , что функция возвращает тип string, но функция должна вернуть массив , подскажите пожалуйста, что написать вместо string ?

Код:
function MyGetWordsFromText (text: string) : string;
var
dlina: integer;
i: integer;
s: integer;
kod: integer;
slovo: array[1..30] of string;
begin
  s:=0;
	dlina:=length(text);
	for i:=1 to dlina do
	begin
		kod:=ord(text[i]);
		if kod<>32 then
		begin
                        s:= s+1;
			slovo[s]:=text[i];
		end;
	end;
result:= slovo;
end;
RNT вне форума Ответить с цитированием
Старый 14.06.2009, 22:37   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Код:
slovo: array[1..30] of string;
...
result:= slovo;
По объявлению, функция должна вернуть строку, а вы пытаетесь вернуть массив строк
-------------------------------------------------------
Код:
kod:=ord(text[i]);
if kod<>32 then
А чем вас не устраивает такой вариант
Код:
if text[i] <> ' ' then
Росли вроде умными, выросли дурнями... (c)А.Васильев

Последний раз редактировалось Greblin; 14.06.2009 в 22:40.
Greblin вне форума Ответить с цитированием
Старый 14.06.2009, 22:38   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,002
По умолчанию

обьявить свое slovo так
slovo:string[30];
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.06.2009, 22:42   #4
MaXoN66613
Пользователь
 
Регистрация: 09.06.2009
Сообщений: 28
По умолчанию

у меня похожая ошибка была, той переменной каотрую ты обьявляешь к типу стринг, надо написать диапозон, сколько туда можно максимально ввести символов. вот так text:string[30]; , я конечно не уверен, но всеже ...
MaXoN66613 вне форума Ответить с цитированием
Старый 14.06.2009, 22:55   #5
RNT
Пользователь
 
Аватар для RNT
 
Регистрация: 15.09.2008
Сообщений: 59
По умолчанию

я хочу в будущем написать функцию , которая принимает любой текст , и возвращает массив , каждым элементом которого является слово, тоесть функция которая делит текст на слова . Мне нужно , чтобы функция возвратила именно массив . Как это сделать ?
RNT вне форума Ответить с цитированием
Старый 14.06.2009, 22:55   #6
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от RNT Посмотреть сообщение
я хочу в будущем написать функцию , которая принимает любой текст , и возвращает массив , каждым элементом которого является слово, тоесть функция которая делит текст на слова . Мне нужно , чтобы функция возвратила именно массив . Как это сделать ?
сделайте свой тип....
Код:
type
   mytype = array[1..30] of string;
и тогда можно так
Код:
function myfunc(...):mytype;
__STDC__ вне форума Ответить с цитированием
Старый 14.06.2009, 23:11   #7
RNT
Пользователь
 
Аватар для RNT
 
Регистрация: 15.09.2008
Сообщений: 59
По умолчанию

Работает , но приходится объявлять новый тип в главной программе slovo тоже приходится объявлять как mytype , мне просто нужно сделать так , чтобы функция вернула массив , каждым элементом которого является слово, можно ли сделать это другим способом ?
RNT вне форума Ответить с цитированием
Старый 14.06.2009, 23:14   #8
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Не понял.. это и подразумевалось, что объявлять будете его как mytype... Что вас не устраивает???
__STDC__ вне форума Ответить с цитированием
Старый 14.06.2009, 23:17   #9
RNT
Пользователь
 
Аватар для RNT
 
Регистрация: 15.09.2008
Сообщений: 59
По умолчанию

Разве функция не может вернуть массив ?
RNT вне форума Ответить с цитированием
Старый 14.06.2009, 23:20   #10
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

нет, не может

***
в том плане что нельзя писать к примеру
Код:
function a:array of ...;
__STDC__ вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить тип треугольника michailevg Общие вопросы C/C++ 3 15.12.2008 18:29
Помогите определить тип двух констант. TheWanderer Общие вопросы C/C++ 1 18.11.2008 01:13
Шаблон функции срвнения. Определить тип. Иллидан Общие вопросы C/C++ 3 30.05.2008 00:44
помогите решить: 1 задача на множественный тип, 2 на файлы и процедуры и функции mpegable Паскаль, Turbo Pascal, PascalABC.NET 1 07.05.2008 18:17
как определить тип чипсета?? Spy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 24.05.2007 00:36


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS