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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2007, 21:58   #1
TheNovice
 
Регистрация: 27.02.2007
Сообщений: 3
По умолчанию Работа с типом Record

В ходе написания программы столкнулся с необходимостью
разбиения строки в компоненте Memo на 3 части и записи каждой из них
в отдельное поле записи и контролем содержимого поля

Пример:в Memo задается строка 'ADDWF f,d' (f и d определенные числа) ранее был объявлен массив

AsmCode: array[0..1023] of record
Command: string[6];
op1:Word;
op2:Word;

Обработчик при событии 'Button1Click' должен сохранить строку до запятой в поле Command, первый операнд в поле op1, а второй в поле op2
При этом нужна проверка
1.в поле Command известная и синтаксически правильная команда
(наверное это реализовывается так
if AsmCode.Command[i]<>'имя команды1' and 'имя команды2' и т.д.)
хотя я не уверен в своей правоте

2.0<f<31,
3.d либо 1 либо 0.

Команд будет 3 типа
1. Команда с 2-мя операндами 'ADDWF f,d'
2. Команда с 1-м операндом 'CALL k'
3. команда без операндов 'NOP'
Соответствено для команд вида 2 и 3 необходима проверка количества
операндов, т.е. чтобы не написали NOP с операндами

Собственно прошу помочь с кодом =)

Последний раз редактировалось TheNovice; 28.02.2007 в 10:49.
TheNovice вне форума Ответить с цитированием
Старый 27.02.2007, 23:00   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Ничего сложного не вижу, но возникает вопрос: почему строковая переменная имеет длину 6?
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 Buf, Buf2: String;
  c,t,i: integer;
begin
 t:=0;
 for c:=0 to memo1.Lines.Count-1 do
  begin
   Buf:=memo1.Lines.Strings[c];
    i:=Pos(' ',Buf);
  AsmCode[t].Command:=copy(Buf,0,i-1);
    Delete(Buf,1,i);
    i:=Pos(',',Buf);
    Buf2:=copy(Buf,0,i-1);
    delete(buf,1,i);
    if (strtoint(Buf)>0) and (strtoint(Buf)<31) then AsmCode[t].op1:=strtoint(Buf)
     else Continue;
    if (strtoint(Buf2)=0) or (strtoint(Buf2)=1) then AsmCode[t].op2:=strtoint(Buf2)
     Else Continue;
    inc(t);
  end;
end;
Познавая других, мы познаем себя.
С'est la vie...

Последний раз редактировалось SuperVisor; 28.02.2007 в 13:33.
SuperVisor вне форума Ответить с цитированием
Старый 27.02.2007, 23:14   #3
TheNovice
 
Регистрация: 27.02.2007
Сообщений: 3
По умолчанию

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Ничего сложного не вижу, но возникает вопрос: почему строковая переменная имеет длину 6? Завтра здесь будет код, если кто-нибудь не ответит раньше. З.Ы. пишу с мобилы - писать сложно.
команд с числом сиволов >6 нет, заранее спасибо.

Последний раз редактировалось TheNovice; 27.02.2007 в 23:16.
TheNovice вне форума Ответить с цитированием
Старый 28.02.2007, 13:34   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Поскольку были добавлены условия - код неполный. Проверку лучше организовать по командам посредством CompareStrings и отталкиваться от него по операндам.
Будут вопросы - пиши.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 28.02.2007, 17:52   #5
TheNovice
 
Регистрация: 27.02.2007
Сообщений: 3
По умолчанию

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Поскольку были добавлены условия - код неполный. Проверку лучше организовать по командам посредством CompareStrings и отталкиваться от него по операндам.
Будут вопросы - пиши.
Все дальше все сделал сам
Огромное спасибо за помошь

Последний раз редактировалось TheNovice; 01.03.2007 в 00:56.
TheNovice вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGrid и поля с типом MEMO doncova1 БД в Delphi 4 27.03.2009 01:20
как записать record в файл Kn793 Общие вопросы Delphi 5 01.08.2008 08:10
record/file potion Паскаль, Turbo Pascal, PascalABC.NET 3 10.05.2008 20:15
Вопрос по поводу записей (Record) werser Помощь студентам 13 05.09.2007 23:11
Ассоциирование программы с типом файлов ZhekON Общие вопросы Delphi 7 01.06.2007 18:33