Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];

Вниз

Помогите найти ошибку в коде   Найти похожие ветки 

 
Виктор   (2008-05-13 13:30) [0]

Здравствуйте! Мне необходимо сравнить 2 файла 111.zzz и 222.zzz и найти номер байта с которого они различаются, написал простенькую программку, а она не работает, в чём косяк, подскажите, а то что-то я торможу :(
Вот сама прога:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k:integer;
f,f1:file;
buf,buf1:byte;
begin
assignFile(f,"c:\111.zzz");
reset(f);
assignFile(f1,"c:\222.zzz");
reset(f1);
i:=0;
seek(f,0);
seek(f1,0);
while i<=FileSize(f) do
 begin
 BlockRead(f,buf,1);
 BlockRead(f1,buf1,1);
 if buf<>buf1 then
   showMessage(IntToStr(i));
 inc(i);
 seek(f,i);
 seek(f1,i);
 end;
closeFile(f);
closeFile(f1);  
end;

end.


 
Palladin ©   (2008-05-13 13:31) [1]

http://delphimaster.net/view/11-1204046814/


 
Сергей М. ©   (2008-05-13 13:33) [2]


> она не работает


Что, прямо так и заявляет - "не работаю" ?


 
Виктор   (2008-05-13 13:36) [3]

Большое спасибо!!


 
Виктор   (2008-05-13 13:39) [4]


> Что, прямо так и заявляет - "не работаю" ?

Ну, да, выдаёт ошибку, хотя код вроде правильный, файлы с такими именами существуют...


 
Palladin ©   (2008-05-13 13:45) [5]

а он и будет выдавать, ты не указал размер считываемой единицы, а по умолчанию он, по моему, 127, потому указывая BlockRead(f,buf,1); ты читаешь не 1 байт, как тебе кажется, а 127, отсюда и кирдык... читать книжки нужно...


 
Lumen ©   (2008-05-13 13:50) [6]

>Виктор   (13.05.08 13:30)
Мне кажется, оба Seek лишние, после BlockRead указатель там где ему и положено быть. Ну а по существу, необходимо:

reset(f, 1)  и reset(f1, 1);


 
Сергей М. ©   (2008-05-13 13:55) [7]


> Ну, да, выдаёт ошибку


Что, вот прямо так и говорит - "выдаю ошибку" ?

Или не царское это дело - анализировать содержание реального сообщения об ошибке ?


 
Palladin ©   (2008-05-13 13:57) [8]

там вообще все seekи лишние, и file лишнее, на кой хрен работать с нетипизированными файлами с целью блочного чтения целого одного байта, фигли на такси за хлебом ездить


 
Leonid Troyanovsky ©   (2008-05-13 13:59) [9]


> Виктор   (13.05.08 13:30)  

> Вот сама прога:


function CompStream(Stream1, Stream2: TStream): Boolean;
const
 bufsize = $1000;
var
 buf1, buf2: array [0..bufsize-1] of Byte;
 nb1, nb2 : Longint;
begin
  Result :=  Stream1.Size = Stream2.Size;
  if not Result then
    Exit;
  while (Stream1.Position < Stream1.Size) do
    begin
      nb1 := Stream1.Read(buf1, bufsize);
      nb2 := Stream2.Read(buf2, bufsize);
      Result := nb1 = nb2;
      if not Result then
        raise Exception.Create("Compare error");
      Result := CompareMem(@buf1, @buf2, nb1);
      if not Result then
        Exit;
    end;
end;

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.045 c
8-1180951254
ZMRaven
2007-06-04 14:00
2008.06.08
Перемотка? Пропуск кадров?


2-1211034008
mahab
2008-05-17 18:20
2008.06.08
интефейс IADsMembers


2-1210916354
Opera1
2008-05-16 09:39
2008.06.08
ValueListEditor1 добавление значений


2-1210977985
Tomn
2008-05-17 02:46
2008.06.08
ImageList &amp; StringGrid


15-1209231698
Andy BitOff
2008-04-26 21:41
2008.06.08
Математика. Как реализовано?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский