Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.04.2012, 14:28
Petros9n Petros9n вне форума
Прохожий
 
Регистрация: 13.10.2011
Сообщения: 34
Репутация: 10
По умолчанию Помогите с алгоритмом

Здравствуйте, такая ситуация: есть в едите ключ суть в том что каждые две цифры ключа указывают на ячейку в матрице, например ключ: 13233141
здесь 1 - номер строки первого элемента, 3 - номер столбца первого элемента, 2 - номер строки второго элемента и т.д. Надо алгоритм для считывания этих координат и записи по ним определённых значений в матрицу, я такой алгоритм написал:
Код:
L:=1;
s:=edtKey.Text;
While L<=Length(s) do
begin
i := StrToInt(s[L]);
j := StrToInt(s[L+1]);
Mas[i][j]:=1;
L := L+2;
end;

Суть в том что матрица может быть размером больше 10 и координаты могут состоять из двух чисел, я придумал в ключе отмечать символом "*" (например 93*105*106) который будет давать знать программе что дальше находится многозначная цифра. Вот надо под это доработать алгоритм. Надеюсь на Вашу помощь.

Пытаюсь придумать алгоритм но пока ничего толкового, сделал как-то так:
Код:
L:=1;
s:=edtKey.Text;
  While L<=Length(s) do
  begin
    if s[L] = '*' then
      begin
        i := StrToInt(s[L+1]+s[L+2]);
        if s[L+3] = '*' then
          j := StrToInt(s[L+4]+s[L+5])
        else
          j := StrToInt(s[L+3]);
      end
	else  
	  i := StrToInt(s[L]);
    if s[L+1] = '*' then
      j := StrToInt(s[L+2]+s[L+3])
    else
      j := StrToInt(s[L+1]);
    Mas[i][j]:=1;
    L := L+2;
  end;
результат -> Runtime error 216

Последний раз редактировалось Petros9n, 30.04.2012 в 17:32.
Ответить с цитированием
  #2  
Старый 30.04.2012, 21:20
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

А не проще взять строку из Edit-а и загрузить в StringList. В качестве разделителя указать свой символ.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Petros9n (30.04.2012)
  #3  
Старый 30.04.2012, 22:27
Petros9n Petros9n вне форума
Прохожий
 
Регистрация: 13.10.2011
Сообщения: 34
Репутация: 10
По умолчанию

Через StringList получилось сделать, спасибо.
Ответить с цитированием
  #4  
Старый 30.04.2012, 22:38
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Можно выдернуть из StringList-а, его алгоритм разбивки.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter