
27.10.2009, 22:42
|
|
Новичок
Регистрация: 23.08.2009
Сообщений: 4
С нами:
8798718
Репутация:
0
|
|
подскажите
может у кого есть ссылка где взять ретривер для вконтакте
|
|
|

28.10.2009, 01:13
|
|
Новичок
Регистрация: 12.05.2008
Сообщений: 19
С нами:
9472418
Репутация:
2
|
|
Здравствуйте!
Помогите пожалуйста для моего случая найти какую-то альтернативу для case или подскажите, что я должен сделать с ним, чтобы эта зараза работала. Видите ли ему нужны ordinal types, то есть проверить, равна ли переменная числу мы можем, а вот проверить равность какой-то строке не получается, тут только многострочным if..else приходится..
Хотя, все несколько проще. На функцию пришла строка в виде одного символа или буквы.. Надо определить, чему она там равна и вывести результат; на каждый символ результат разный.
Например:
---------------
function TForm1.ABC(c:string):string;
begin
case с of
'A': begin .. end;
'B': begin .. end;
...
'Z': begin .. end;
end;
end;
------------
переход на pchar не получился, все равно где-нибудь ругается..
помогите, пожалуйста все поставить на места, мне ужасно лень набирать кучу ифов и их элсов.. но если надо, то придется..
|
|
|

28.10.2009, 02:04
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
С нами:
9162683
Репутация:
175
|
|
Может быть нужно записывать так:
|
|
|

28.10.2009, 02:13
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
С нами:
9176827
Репутация:
29
|
|
---------------
function TForm1.ABC(c:string):string;
begin
case с of
'A': begin .. end;
'B': begin .. end;
...
'Z': begin .. end;
end;
end;
------------
В вашем в коде (case с of) записана русская буква С, вместо английской C, поэтому, вероятно, и ругается даже при смене типов переменных.
Код, который будет работать:
Код:
function ABC(par: char): string;
begin
case par of
'A': begin
Result := 'lalala';
end;
'B': begin
Result := 'ololo';
end;
end; // case
end; // ABC
Если в качестве параметра функции передается только 1 символ, то логично использовать тип Char, нежели String.
Последний раз редактировалось StealthMaster; 28.10.2009 в 02:31..
|
|
|

28.10.2009, 11:56
|
|
Новичок
Регистрация: 12.05.2008
Сообщений: 19
С нами:
9472418
Репутация:
2
|
|
В вашем в коде (case с of) записана русская буква С, вместо английской C, поэтому, вероятно, и ругается даже при смене типов переменных.
ну, знаете, я не настолько дурак, чтобы писать переменные в делфи по-русски
я тоже думал о том, чтобы передавать char, но ситуация такова, что я должен преобразовать тип string в тип char, а именно это у меня что-то не выходит..
|
|
|

28.10.2009, 18:45
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
С нами:
9176827
Репутация:
29
|
|
я тоже думал о том, чтобы передавать char, но ситуация такова, что я должен преобразовать тип string в тип char, а именно это у меня что-то не выходит..
Используйте функцию, написанную выше, вызванную так:
Код:
...
var
str1, str2: string;
n: byte;
begin
... // вычисление нужной строки и номера нужного символа в строке (n)
str2 := ABC(str1[n]);
...
end;
ну, знаете, я не настолько дурак, чтобы писать переменные в делфи по-русски
каждый может ошибиться  мы же люди, а не машины.
Последний раз редактировалось StealthMaster; 28.10.2009 в 18:48..
|
|
|

28.10.2009, 22:00
|
|
Новичок
Регистрация: 12.05.2008
Сообщений: 19
С нами:
9472418
Репутация:
2
|
|
А вот теперь мы возвращаемся к тому, с чего я начал!!!
Нельзя организовать оператор case перебором по string.
Он ругается, что ему нужен ordinal type.
Char бы подошел.. но я в тупике, и не могу понять, что делать, думать что-то вместо case или преобразовывать string во что-то другое, "более числовое"
------------------------
Все, вопрос снят, проблема решена!
str: string; с: char; i: byte - переменная цикла for;
c:=str[i];
ABC(c);
все работает 
Последний раз редактировалось Nick_Rimer; 28.10.2009 в 22:51..
|
|
|

29.10.2009, 18:11
|
|
Познающий
Регистрация: 01.10.2009
Сообщений: 97
С нами:
8742253
Репутация:
26
|
|
Значит такой вопросик :
есть Тмемо в который водят в столбик цифры от 4 до 9 знаков
внизу есть еще 6 Тмемо
Нужно чтоб эти цифры(которые в столбик)
сортировались в те 6 Тмемо
по такому принцыпу:
в 1Тмемо цифры из 4х знаков
в 2Тмемо цифры из 5 и тд до 9
вродебы реализовал а почемуто несортирует он их(
прошу помочь с реализацией в Делфи7
|
|
|

29.10.2009, 18:23
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
Код:
var
x : integer;
begin
for x := 0 to memo1.Lines.Count-1 do
begin
case length(memo1.Lines.Strings[x]) of
4:memo2.lines.add(memo1.Lines.Strings[x]);
5:memo3.lines.add(memo1.Lines.Strings[x]);
6:memo4.lines.add(memo1.Lines.Strings[x]);
7:memo5.lines.add(memo1.Lines.Strings[x]);
8:memo6.lines.add(memo1.Lines.Strings[x]);
9:memo7.lines.add(memo1.Lines.Strings[x]);
end;
end;
end;
|
|
|

29.10.2009, 18:29
|
|
Познающий
Регистрация: 01.10.2009
Сообщений: 97
С нами:
8742253
Репутация:
26
|
|
а где критерии что если длина 4 символа то в 4мемо и тд?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|