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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2010, 13:39   #1
Kurai
Пользователь
 
Регистрация: 16.03.2010
Сообщений: 27
По умолчанию проблемы с Char и String в 2009 Delphi

вот есть задание: Написать программу подсчета количества неповторяющихся символов в каждом слове произвольной строки. Слова отделяются друг от друга одним или несколькими пробелами. Ввод строки заканчивать нажатием клавиши Enter.

Есть код, который работает в 2007 Делфи

Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
   Forms, Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private     { Private declarations }
  public      { Public declarations }
  end;
var   Form1: TForm1;
implementation
{$R *.dfm}
 
Function Krz(St:string):Word; // Подсчет кол-ва различныx символов
Var a : set of char;
         m,i : Word;
begin
         m:=0; a:=[];
  for i:=1 to Length(St do
                if not(St[i] in a) then begin
                 Include(a,St[i]);  Inc(m);
                                                end;
Result:=m;
end;
 
Function FWrd(st : string) : string;
  var n,i,nst: integer;
      sl,srez : string;
begin
   Result:='';  srez:='';  n:=Length(st); 
   if n=0 then exit;
      st:=st+' '; n:=n+1; sl:='';
    for i:=1 to n do
     if st[i]<>' ' then sl:=sl+st[i]
                              else
        if  sl<>'' then begin
                 srez:=srez+' '+sl+'-'+IntTostr(Krz(sl));   sl:='';
                                     end;
       Result:=srez;
end;  // Конец функции FWrd
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear;  Edit2.Clear;
end;
но он не работает в 2009 Делфи, вместо этого идет ошибка [DCC Warning] Unit1.pas(37): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.

как я узнала, в 2009 изменилась кодировка Char и String, и теперь вместо set of char нужно писать set of ansichar
но мне это ничего не дало...расскажите, пожалуйста, подробнее, что на что заменяется в 2009 Делфи, чтобы я знала
Kurai вне форума Ответить с цитированием
Старый 12.04.2010, 13:53   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Код:
Function Krz(St: string): Word; // Подсчет кол-ва различныx символов
Var
  a: set of Char;
  m, i: Word;
begin
  m:= 0;
  a:= [];
  for i:= 1 to Length(St) do
    if not(St[i] in a) then
    begin
     Include(a, AnsiChar(St[i]));
      Inc(m);
    end;
  Result:= m;
end;
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 12.04.2010, 14:32   #3
Kurai
Пользователь
 
Регистрация: 16.03.2010
Сообщений: 27
По умолчанию

MaxNik2009
спасибо, эта ошибка изчезла, но там где Inc(m) появилась E2081 Assignment to FOR-Loop variable 'm'
хотя вроде бы цикл правильный
Kurai вне форума Ответить с цитированием
Старый 12.04.2010, 14:40   #4
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

У меня на D 2010 компилируется нормально..
ошибка появляется при компиляции?
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 12.04.2010, 14:56   #5
Kurai
Пользователь
 
Регистрация: 16.03.2010
Сообщений: 27
По умолчанию

да, во время компиляции возникала, но заново написала программу - все заработало, спасибо!

немного напрягает, конечно, заново писать программу, но порой если не знаешь, где ошибка, это помогает
Kurai вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Edit Показать/Скрыть пароль.. String и Char проблемы.. Человек_Борща Общие вопросы Delphi 2 10.04.2010 22:32
Проблемы с выполнением ХП в Delphi 2009 MargoNik БД в Delphi 10 01.06.2009 08:53
Проблемы с framework-ом ну и с Delphi 2009 Altera Свободное общение 1 18.05.2009 22:07
из string в char ShenDy Общие вопросы C/C++ 1 14.04.2008 11:01
char->string eds Общие вопросы .NET 1 28.11.2007 17:22