Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать значение функции и получить результат? [D7, XP]


Anastasia ©   (2009-12-03 16:30:00) 

Нужно на практической написать функцию которая принимала бы слово и возвращала результат в разных его написаниях (Например: из Вася:ВАСЯ, вася,ВаСя, вАсЯ). Я написала так:

function UpLoweCase(sel:String):String;
var
st1,st2,str:String;
begin
str:=AnsiLowerCase(sel);
sel:=str;
//Всі букви великі
uplow[1]:=AnsiUpperCase(sel);
//Всі букви малі
uplow[2]:=AnsiLowerCase(sel);
//Перша буква велика,інші малі
st1:=Copy(sel,1,1);
Delete(sel,1,1);
st2:=sel;
uplow[3]:=AnsiUpperCase(st1)+st2;
//Перша буква мала,інші великі
sel:=str;
st1:=Copy(sel,1,1);
Delete(sel,1,1);
st2:=sel;
uplow[4]:=AnsiLowerCase(st1)+AnsiUpperCase(st2);
end;
А как вернуть результат из масива в програму незнаю :(


KilkennyCat   (2009-12-07 20:36:00) [1]

А Корнелий теперь безрукий... эх, женщины нас губят, иногда постепенно...


Sha   (2009-12-07 14:01:00) [2]

> Anastasia   (07.12.09 13:45) [13]
> Спасибо большое,очень выручили ребята! :{}

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


Anastasia   (2009-12-07 13:45:00) [3]

Спасибо большое,очень выручили ребята! :{}


Sha   (2009-12-06 15:32:00) [4]

На самом деле задача очень неплохая.
Позволяет преподу задать кучу дополнительных вопросов.


KilkennyCat   (2009-12-06 13:51:00) [5]

Что будет, если зададут ту же задачу, но с названиями городов... Банког:
Krungthepmahanakhon Amornrattanakosin Mahintharayutthaya Mahadilokphop Noppharat Ratchathaniburirom Udomratchaniwetmahasathan Amonphiman Awatansathit Sakkathattiyawitsanukamprasit


clickmaker   (2009-12-06 13:17:00) [6]

> Например слово из 20 букв потребует 2^20 элементов
> Это очень большое число

да, "Арнольд Шварценеггер" лучше не брать.
Настя запарится писать uplow[1]:=... uplow[N]:=


KilkennyCat   (2009-12-05 02:04:00) [7]

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


Германн   (2009-12-05 01:54:00) [8]


> KilkennyCat ©   (04.12.09 23:41) [7]
>
> Я бы реализовал через масштабирования битмапа...
>

2^20 масштабирований битмапа?
:)


KilkennyCat   (2009-12-04 23:41:00) [9]

Я бы реализовал через масштабирования битмапа...


Плохиш   (2009-12-04 17:23:00) [10]


> Anastasia   (03.12.09 17:27) [3]
>
> >Anatoly Podgoretsky. s:=UpLoweCase('Вася'); В s и будет
> Result?

Рыдал...


korneley   (2009-12-04 00:33:00) [11]


> Sha ©   (03.12.09 22:31) [4]

Злые Вы :) "ВсёАпЛоу", говорите...

function IDontKnowUpOrLow(const s: AnsiString): AnsiString;
var i : integer;
begin
 SetLength(Result, Length(s));
 for i := 1 to Length(s) do
   if boolean(random(2))
   then Result[i] := AnsiUpperCase(s[i])[1]
   else Result[i] := AnsiLowerCase(s[i])[1];
end;

Сиквел, как и положено, похуже :)))

ЗЫ: Да, и Randomizeперед всей этой шнягой, не забыть вызвать :)))
ЗЗЫ: пошёл отрывать себе руки :)


Sha   (2009-12-03 22:31:00) [12]

function AllUpLow(const s: AnsiString): AnsiString;
var
 UpLow: array [0..1] of AnsiString;
 Len, Count, Same, No, Place: integer;
 p: pAnsiChar;
begin;
 Len:=Length(s);
 if (Len=0) or (Len>32) then Result:=''
 else begin;
   UpLow[0]:=AnsiLowerCase(s);
   UpLow[1]:=AnsiUpperCase(s);

   Same:=-1;
   Count:=1;
   for Place:=Len downto 1 do begin;
     Same:=(Same shl 1) or ord(UpLow[0][Place]=UpLow[1][Place]);
     if (Same and 1)=0 then Count:=Count+Count;
     end;
   SetLength(Result, (Len+2)*Count-2);
   integer(p):=integer(Result);

   No:=-1;
   Count:=0;
   repeat;
     No:=(No+1) or Same;
     if Count>0 then begin;
       p[Count]:=',';
       p[Count+1]:=' ';
       Count:=Count+2;
       end;
     for Place:=0 to Len-1 do p[Count+Place]:=UpLow[(No shr Place) and 1][1+Place];
     Count:=Count+Len;
     until No=-1;
   end;
 end;

procedure TForm1.Button1Click(Sender: TObject);
begin;
 Edit2.Text:=AllUpLow(Edit1.Text);
 end;


Anastasia   (2009-12-03 17:27:00) [13]

>Anatoly Podgoretsky. s:=UpLoweCase('Вася'); В s и будет Result?


Anatoly Podgoretsky   (2009-12-03 16:41:00) [14]

> Anastasia  (03.12.2009 16:30:00)  [0]

Ну это просто и жестоко, для начала для указаного случая нужен массив не на 4 элемента, а на 16, далее цикл от 2 до 16 и простая конкатенация результата


  Result := Result + ', '+ uplow[i];


Например слово из 20 букв потребует 2^20 элементов
Это очень большое число


clickmaker   (2009-12-03 16:32:00) [15]

delphi help - Function declarations

децкий сад...


Наверх

Титульная страница Поиск, карта сайта Написать письмо