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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.12.2011, 16:22
Mew Kid Mew Kid вне форума
Прохожий
 
Регистрация: 25.12.2011
Сообщения: 5
Репутация: 10
По умолчанию помогите подредактировать программу

зддравствуйте)
есть программка, которая вычисляет хэш файла. всё по-нубовски, к оболочке одной программы я прикрутила модуль вычисления хэша md5.
а теперь тупой вопрос: каким образом можно реализовать, чтобы при изменении файла (и соответственно изменении вычисленного хэша) выводилось сообщение об этом?
хэш.rar
Ответить с цитированием
  #2  
Старый 25.12.2011, 17:53
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Я бы сделал так:

Создал бы файл со списком файлом нужной папки, и хешей тех файлов.
(надежно этот файл закодировал - так как мало ли )

После этого 3 варианта:
- периодически (по таймеру) запускать прогу и сверять хеши.
- периодически вручном режиме запускать прогу.
- отслеживать изменения файлов средствами винды ( как по мне самый ненадежный метод, так можно например подделать дату изменения файла и т.д.)
Ответить с цитированием
  #3  
Старый 25.12.2011, 18:05
Mew Kid Mew Kid вне форума
Прохожий
 
Регистрация: 25.12.2011
Сообщения: 5
Репутация: 10
По умолчанию

ну так то да, но моих знаний на это не хватит))
сейчас прога просто выводит выбираемые файлы и их хэш списком. что нужно добавить, чтобы они их сравнивала?
Ответить с цитированием
  #4  
Старый 25.12.2011, 18:16
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

добавить второй список
сравнивать можно построчно, или если свместо списков мемо - через text
Ответить с цитированием
  #5  
Старый 25.12.2011, 18:31
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от Mew Kid
ну так то да, но моих знаний на это не хватит))
сейчас прога просто выводит выбираемые файлы и их хэш списком. что нужно добавить, чтобы они их сравнивала?
Тоесть вычислить хеш файла - знаний хватило, а сравнить 2 текстовые строки не хватает? ( Это тоже самое, что решить интеграл хватило ума, а вот 2+2= незнаешь как вычислить). - Тогда , вывод, что пример делал не ты, а ты просто пытаешся его переделать под свою задачу. Но знаний то 0.

Тогда, вам батенька, в раздела работа.
Ответить с цитированием
  #6  
Старый 25.12.2011, 18:55
Mew Kid Mew Kid вне форума
Прохожий
 
Регистрация: 25.12.2011
Сообщения: 5
Репутация: 10
По умолчанию

я не батенька. и я тоже могу сделать вывод: вы не прочитали моё сообщение. я между прочим написала, что я использовала готовый модуль вычисления хэша. и да, знаний 0 ^^

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

зы список реализован как TListView

Последний раз редактировалось Mew Kid, 25.12.2011 в 19:45.
Ответить с цитированием
  #7  
Старый 25.12.2011, 20:21
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от Mew Kid
и да, знаний 0 ^^
В раздел работа.


П.с.: и уж сообщение читал.
То что взята готовая реализация, тоже увидел.
Но если вы реализовали вычисление хеша файла - то как сравнивать текстовые строки будете знать по определению.
А если это не так - то вся та прога не ваша.

Если чесно это уже ппц, пошли блин безопасники.
Поступают золотые детки, типа если безопасник, та это же престижно и круто.
НО
если ты безопасник - это это в первую очередь голова с мозгом.

Лдано, кому я рассказываю...

Последний раз редактировалось Konrad, 25.12.2011 в 20:33.
Ответить с цитированием
  #8  
Старый 25.12.2011, 22:00
Mew Kid Mew Kid вне форума
Прохожий
 
Регистрация: 25.12.2011
Сообщения: 5
Репутация: 10
По умолчанию

зачем сидеть на форуме помощи и посылать тех, кто её просит?
филосораптор.жпг

отзывчивые люди, помогите пожалуйста!!! я немножко разобралась, и теперь вопрос изменился. как сделать поиск по значениям в столбцах в TListView?

Konrad, а вам я ответила в личку)
Ответить с цитированием
  #9  
Старый 25.12.2011, 22:21
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Если просящий ничего не знает и не хочет разбираться, а хочет, что бы за него все сделали и подали на блюдечке, то за просто так никто делать не будет ничего.

Цитата:
как сделать поиск по значениям в столбцах в TListView
Доступ к каждому элементу ListBox можно получить через его свойство Items, которое является списком строк. Доступ к элементу можно получит по индексу, как в массиве. Нумерация с 0, количество - ListBox1.Count. Так как нумерация с 0, то последний элемент будет ListBox1.Count-1
Ответить с цитированием
  #10  
Старый 25.12.2011, 22:55
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Справка, конечно, предусмотрена для тех, кто "обязан" отвечать лодырям. Ладно, смотрим справку.
Код:
  with ListView do
  begin
    ListItem.Item[Номер строки].SubItems.Strings[Номер колонки];
  end;
для 0-ой колонки используется не SubItems, а Caption.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 25.12.2011, 22:57
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Да, не обратил внимание, не увидел, что там ListView
Ответить с цитированием
  #12  
Старый 26.12.2011, 10:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Так, все хороши. Отставить наезды друг на друга.

Mew Kid, объясняю так, что бы было понятно. К сожалению, ты просто "попала под раздачу", хотя часть вины за это на тебе все-таки есть. Если программирование не является твоим профильным предметом, так об этом и надо написать. И вопрос надо ставить в более корректной форме, а не "что мне тут надо написать, а лучше просто напишите и дайте мне". Вообще, данный форум создан для общения единомышлинников и студентам тут помогают, скажем так, своеобразно. Тебе с удовольствием подскажут путь решения твоей проблемы, но делать за тебя просто так никто ничего не будет. Исключением из этого правила обычно является одна из 3х следующих ситуаций:
1. Задача настолько проста, что кто-то просто может "накидать" код прямо здесь. Обычно такой код не проверяется и фактически соответсвует описанному выше правилу помощи - показывает путь решения проблемы, просто не словами, а кодом.
2. Задача просто кого-то заинтересовала и он решил написать свой код. Ну тут комментировать нечего, просто попалась интересная задача для конкретного человека. Или ему было просто интересно ее решить. Зачастую такие решения бывает очень трудно потом сдать преподавателю, т.к. в этом случае код может быть достаточно запутанный в следствии оптимизации или по другим причинам, да и не уверен, что в таком случае будут отслежены все возможные варианты (граничные случаи).
3. Ну и, собственно, случай "отсылки в раздел Работа". Тут все посто. Если не можешь или не хочешь делать сам, то готовое решение "под ключ" можно просто купить. Обычно в работу отсылают либо типовые задачи (читай, учебные), либо задачи, где по условию понятно, что работы там далеко не на 5-10 минут и при этом задача не сильно интересна.

Конрад и все остальные, я понимаю, что халявщики реально достали, но давайте все-таки вести себя более сдерджано. Если нет желания решать задачу "за просто так", то корректно перенаправьте ТС в раздел Работа без эмоциональных комментариев. Все-таки, в большинстве своем, не дети уже, а, стоит надеяться, взрослые профессионалы. А эмоции можно выссказать в ЗР.

Теперь по существу вопроса.
Пусть есть некоторая функция function md5file(AFileName : String) : String, которая вычисляет md5 для файла по его имени. Пусть при первом запуске мы получили список файлов и их md5 и сохранили их в некоторый ListView, где в элементах в св-ве Caption хранится имя файла (полное), а в св-ве SubItems[0] - соотв. md5 (примерно так можно сохранить данную информацию в ListView). Тогда код проверки будет примерно такой:

Код:
var
  I : Integer;
  F : Boolean;
  S : String;
begin
  S := '';
  F := False;
  For I := 0 To ListView.Items.Count-1 Do
    If ListView.Items[i].SubItems[0] <> md5File(ListView.Items[i].Caption) Then
      Begin
         F := True;
         S := S + 'Изменен файл ' + ListView.Items[i].Caption + #13#10;
     End;
  If F 
    Then ShowMessage(S)
    Else  ShowMessage('Измененных файлов нет.');
end;
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Mew Kid (26.12.2011)
  #13  
Старый 26.12.2011, 13:34
Mew Kid Mew Kid вне форума
Прохожий
 
Регистрация: 25.12.2011
Сообщения: 5
Репутация: 10
По умолчанию

lmikle, спасибо) я всё поняла)
и я не халявщица, я просто не знаю некоторых вещей, и при этом не знаю другого способа узнать их, кроме как спросить)
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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