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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2011, 00:37   #1
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
Подмигивание Создание обновителя игры

Здравствуйте, попытаюсь изложить очередную мысль.

Есть хост на котором хранится большое количество файлов(100 - 200). Есть такие же файлы на локальном компьютере.
Допустим я обновил пару файлов на хосте, как мне проверить на отличия эти файлы и загрузить новую версию их же самих.
Это в чем то схоже с svn, возможно ли это реализовать на Delphi.

Загрузить файл то не проблема, а вот как реализовать проверку файлов это уже чуть по сложней.
men232 вне форума Ответить с цитированием
Старый 23.09.2011, 00:54   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

хэш сравнивать
Voody вне форума Ответить с цитированием
Старый 23.09.2011, 01:50   #3
wowsel
Begin'нер
Пользователь
 
Аватар для wowsel
 
Регистрация: 30.04.2010
Сообщений: 48
По умолчанию

Посчитай crc файлов сервера и клиента и сравнивай при запуске лаунчера. Например ты его запускаешь он качает с сервера txt файл с crc всех файлов и сравнивает со своим. Если какие - то отличаются, то перекачиваешь эти файлы и обновляешь файл.
wowsel вне форума Ответить с цитированием
Старый 23.09.2011, 16:06   #4
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
По умолчанию

А как получить этот crc и как нужно будет оформить txt. Или как я понял нужно будет создавать для каждого свой?
men232 вне форума Ответить с цитированием
Старый 23.09.2011, 16:11   #5
men232
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 59
По умолчанию

Вроде нашел функцию для вычисления crc
Код:
function GetCheckSum(FileName: string): DWORD; 
var 
  F: file of DWORD; 
  P: Pointer; 
  Fsize: DWORD; 
  Buffer: array [0..500] of DWORD; 
begin 
  FileMode := 0; 
  AssignFile(F, FileName); 
  Reset(F); 
  Seek(F, FileSize(F) div 2); 
  Fsize := FileSize(F) - 1 - FilePos(F); 
  if Fsize > 500 then Fsize := 500; 
  BlockRead(F, Buffer, Fsize); 
  Close(F); 
  P := @Buffer; 
  asm 
     xor eax, eax 
     xor ecx, ecx 
     mov edi , p 
     @again: 
       add eax, [edi + 4*ecx] 
       inc ecx 
       cmp ecx, fsize 
     jl @again 
     mov @result, eax 
   end; 
end;
Вот теперь осталось реализовать проверку...
men232 вне форума Ответить с цитированием
Старый 23.09.2011, 16:51   #6
wowsel
Begin'нер
Пользователь
 
Аватар для wowsel
 
Регистрация: 30.04.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от men232 Посмотреть сообщение
А как получить этот crc и как нужно будет оформить txt. Или как я понял нужно будет создавать для каждого свой?
crc создаёшь например по принципу filename:crc, а потом читаешь файл ища ':', например командой pos и смотришь первую часть имя файла, а вторую crc и сверяешь с такими же во втором файле. как то так
wowsel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание 3d игры на C++ Wakatsusiro Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 26.11.2011 01:45
Создание игры Dreik Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 12.05.2011 18:58
Создание игры Ponkole Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 28.04.2011 01:56
Создание игры FilteR Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 12.12.2010 19:08
Создание игры Ушастик Фриланс 1 17.11.2010 18:09