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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2011, 00:12   #1
NativeLand
 
Регистрация: 13.05.2011
Сообщений: 4
По умолчанию Memo. как правильно считать мне данные

Делаю РГР.
Суть: создал Memo1 на форме и нужно ввести сюда координаты точек.
Взял в качестве разделения x и y пробел.
Вот кусок кода, из-за которой не работает программа:
Код:
{описание}
Type koord= record
              x: array [1..100] of integer;
              y: array [1..100] of integer;
              b: array [1..100] of boolean
            end;

var k: koord;
    om,ox,i,s,n,l:byte;
    a,b:boolean;

...

{код ступора программы}
 for i:=1 to n do
    begin
      ox:=0;
      for om:=1 to length(memo1.Lines[i]) do
        begin
          if Copy(memo1.Lines[i],om,1)<>' ' then ox:=ox+1 else
            begin
              k.x[i]:=Strtoint(Copy(memo1.Lines[i],1,om-1));
              k.y[i]:=Strtoint(Copy(memo1.Lines[i],om,length(memo1.Lines[i])- om));
              k.b[i]:=false;
            end;
         end;
    end;
Ошибку (несоответствие типов) прикрепил.
П.С.: может я не правильно строки из мемо копирую или что-то в этом роде ...
Изображения
Тип файла: jpg 111111111.jpg (35.6 Кб, 165 просмотров)
NativeLand вне форума Ответить с цитированием
Старый 14.05.2011, 00:19   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Цитата:
Суть: создал Memo1 на форме и нужно ввести сюда координаты точек.
Взял в качестве разделения x и y пробел.
Сюда это куда? В Мемо?

Тоесть от сюда k: koord; нужно взять коордлинаты точек и записать в Мемо через пробел?

адд: А это что такое?

Код:
length(memo1.Lines[i])
Если нужно узнать кол-во строк в Мемо то это делается так:

Код:
REProcess.Lines.Count
PS: а не, ступил.
Сливочное масло Valio - компиляция как по маслу

Последний раз редактировалось Valio; 14.05.2011 в 00:25.
Valio вне форума Ответить с цитированием
Старый 14.05.2011, 01:29   #3
NativeLand
 
Регистрация: 13.05.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Valio Посмотреть сообщение
Сюда это куда? В Мемо?

Тоесть от сюда k: koord; нужно взять коордлинаты точек и записать в Мемо через пробел?
Наоборот. С мемо берутся координаты и заносятся в k.
В одной строчке содержится 2 числа - k.x[i] и k.y[i] (координаты точек), разделенные пробелом. Всего n строчек.
Цитата:
Сообщение от Valio Посмотреть сообщение
адд: А это что такое?

Код:
length(memo1.Lines[i])
Я пытаюсь "вытянуть" данные с i-й строки в memo. Мб просто я не правильно это делаю, т.к. вообще с memo не работал...
Цитата:
Сообщение от Valio Посмотреть сообщение
Если нужно узнать кол-во строк в Мемо то это делается так:

Код:
REProcess.Lines.Count
PS: а не, ступил.
Кол-во строк в мемо я знаю.

П.С.: извеняюсь, что все так напутано ...
NativeLand вне форума Ответить с цитированием
Старый 14.05.2011, 01:47   #4
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

На вскидку:

Код:
....
z := Pos(' ', memo1.Lines[i]); // Смотрим где стоит пробел.
k.x[i] := StrToInt(Copy(memo1.Lines[i], 1, z - 1)); // Копируем до пробела
k.y[i] := StrToInt(Copy(memo1.Lines[i], z + 1, Length(memo1.Lines[i]))); // Копируем после пробела
...
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 14.05.2011, 01:56   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ошибка в том что ваш "код" встретил пустую строку. как правило она в конце строки. И он пытается перевести её в число.
Человек_Борща вне форума Ответить с цитированием
Старый 14.05.2011, 19:19   #6
NativeLand
 
Регистрация: 13.05.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Ошибка в том что ваш "код" встретил пустую строку. как правило она в конце строки. И он пытается перевести её в число.
Ясно... Теперь вот что случилось:
написал новый код
Код:
 for s:=1 to n do
  begin
     k.b[s]:=false;
     l:= Pos(' ',memo1.lines[s]);
     for i:=1 to l-1 do
      begin
        st:= Copy(memo1.lines[s],i,1);
          for j:=0 to 9 do
           begin
             ch:=Inttostr(j);
             if Copy(st,1,1) = Copy(ch,1,1) then Insert(ch,ox,l-i);
           end;
       end;

       k.x[s]:=Strtoint(ox);
     for i:=l+1 to length(memo1.lines[s]) do
      begin
        st:= Copy(memo1.lines[s],i,1);
          for j:=0 to 9 do
           begin
             ch:=Inttostr(j);
             if Copy(st,1,1) = Copy(ch,1,1) then Insert(ch,al,i-l);
           end;
      end;

      k.y[s]:=Strtoint(al);
 end;
st,al,ox,ch:string...
Сталкнулся с новой бедой: как видите в коде строки не обнуляются и при вводе точек (1,1),(2,2),(3,3) под x3 у3 вносит значения 32.
Попробывал обнулить в коде - выдает вновь ошибку. Можете помочь подправить код?
П.С.: есть ли команда в делфи, строящая кривую по точкам, заданным пользователем?
NativeLand вне форума Ответить с цитированием
Старый 15.05.2011, 00:46   #7
NativeLand
 
Регистрация: 13.05.2011
Сообщений: 4
По умолчанию

Закрывайте тему, нашел ошибку.
NativeLand вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно считать сторку из поля edit? reynevan Win Api 7 16.07.2010 02:21
Как считать каждую строку с memo? Paul11j Помощь студентам 4 19.05.2009 19:30
Как считать данные с БД в WebBrowser? tsergey Общие вопросы Delphi 14 13.04.2009 03:56
Как считать данные из Edit? Svop Компоненты Delphi 11 20.11.2006 16:45
как считать данные с Txt файла? Alar Общие вопросы Delphi 0 29.10.2006 20:12