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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2009, 15:48   #1
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию Сравнение данных

1)Нужно отсеять те данные если в строке присутствует 0 (помечено красным цветом)
2)Нужно сравнить и найти максимально значение (помечено зелёным)
3)Скопировать id максимального значения в стринг (помечено синим)


Пример
До обработки
id=279
800
2
id=22
900
0
id=79
700
1
id=2279
700
2

После обработки
279 (id максимального значения)
Terikon вне форума Ответить с цитированием
Старый 06.04.2009, 16:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну дык в чем траблы?
Допустим ты открыл файл типа Text в переменку F:
Код:
var i,r;integer; s:string;
while not eof(f) do begin
 readln(f,s); i:=pos('=',s); s:=copy(s,i,length(s)-i); val(i,s,r);
  if i>maxID then maxID:=i;
 if not eof(f) then begin
  readln(f,s);
  if s='0' then // этсеиваем
 end
 if not eof(f) then begin
  readln(f,s);
  В s считали зеленое - сам подумай что с ним делать
 end

end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.04.2009, 19:52   #3
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Текст загружаю из мемо, ошибка выскакивает вот здесь while not eof(f) do begin
Terikon вне форума Ответить с цитированием
Старый 07.04.2009, 09:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Читай мой пост внимательно: Допустим ты открыл файл типа Text в переменку F:
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2009, 19:22   #5
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Так загружаю, всё равно выскакиевает ошибка
Код:
 var
f : TextFile;
 begin
AssignFile(f, '123.txt');
  ReWrite(f);
Terikon вне форума Ответить с цитированием
Старый 07.04.2009, 19:38   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а может тебе его Resetить надо а не ReWriteить?
(а то ты его очищаешь зачем-то)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.04.2009, 20:20   #7
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Reset ставил, ошибка выскакивает здесь readln(f,s); i:=pos('=',s); s:=copy(s,i,length(s)-i); val(i,s,r);
Terikon вне форума Ответить с цитированием
Старый 08.04.2009, 13:37   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
s:=copy(s,i+1,length(s)-i);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.04.2009, 17:05   #9
Terikon
Форумчанин
 
Регистрация: 22.02.2009
Сообщений: 174
По умолчанию

Serge_Bliznykov, ошибка осталась всё там же
Terikon вне форума Ответить с цитированием
Старый 08.04.2009, 21:08   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию решение задачи

ну а проверять наличие значка "=" в строке кто будет?!
Код:
readln(f,s); 
i:=pos('=',s);
if i>0 then begin
  s:=copy(s,i+1,length(s)-i); 
  val(i,s,r);
end;
вот только не поможет это Вам...
Т.к. решить частный вопрос по преобразованию строки в число - не проблема.
А проблема в том, ЧТО ИМЕННО находится в Вашем текстовом файле!
структура Вашего файла СТРОГО следующая??:
<строчка с ID=1>
<1-е значение аттрибута1>
<1-е значение аттрибута2>
...
<строчка с ID=N>
<N-е значение аттрибута1>
<N-е значение аттрибута2>

нужно найти максимальное значение аттрибута1 при условии, что аттрибут2 не равен 0
Так?
и это всё на Дельфи?
в строчках с аттрибутами СТРОГО ОБЯЗАТЕЛЬНО ЧИСЛА?!

тогда я предлагаю такой код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   ts: TStringList;
   s : string;
   i : integer;
   v, MaxV  : integer;
   MaxID : string;
begin
  ts := TStringList.Create;
  ts.LoadFromFile('123.txt');
  if ts.Count<2 then begin
      Application.MessageBox(
        'в файле недостаточно строк',
        'Ошибка',MB_ICONSTOP or MB_OK);
      ts.Free;
      Exit;
  end;
  MaxID := '';
  MaxV := -1*MaxInt;
  for i:=0 to (ts.Count div 3)-1 do begin
    if pos('=',ts.Strings[i*3])=0 then begin
      Application.MessageBox(
       PChar('не обнаружен необходимый id в строке '+InttoStr(i*3)),
        'Ошибка',MB_ICONSTOP or MB_OK);
      ts.Free;
      Exit;
    end;
    try
      s := Trim(ts.Strings[i*3+2]);
      v := StrToInt(s);
      if v<>0 then begin
        s := Trim(ts.Strings[i*3+1]);
        v := StrToInt(s);
        if v>MaxV then begin
          MaxV := v;
          s := ts.Strings[i*3];
          MaxID := Copy(s,Pos('=',s)+1,Length(s)-Pos('=',s));
        end;
      end;
    except
      Application.MessageBox(
       PChar('Неверное число в строке '+s),
       'Ошибка',MB_ICONSTOP or MB_OK);
      ts.Free;
      Exit;
    end;
  end;
  Application.MessageBox(
    PChar('Максимальное число = '+IntToStr(MaxV)+' в блоке с ID='+MaxID),
    'Сообщение',MB_OK);
  ts.Free;
end;
Вложения
Тип файла: rar Find_ID.rar (131.5 Кб, 12 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение данных в двух столбцах в Excel 2003 grinders Microsoft Office Excel 4 25.11.2008 16:58
Сравнение данных из двух книг Excel 2003 ast1r Microsoft Office Excel 2 24.11.2008 21:39
Сравнение данных White БД в Delphi 1 09.09.2008 22:32
Сравнение и перенос данных miheus Microsoft Office Excel 1 29.11.2007 16:42