Главная страница
    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.47 MB
Время: 0.06 c
2-1210894155
engine
2008-05-16 03:29
2008.06.08
Отличия свойства Height в дизайнтайме и рантайме


15-1209320986
БарЛог
2008-04-27 22:29
2008.06.08
А кто еще на каких технических форумах сидит?


6-1188565957
Андрей Пл
2007-08-31 17:12
2008.06.08
Как узнать программно имя машины и IP адрес


2-1210854797
pirks
2008-05-15 16:33
2008.06.08
xml форматированный текст


2-1210886447
Johnnnnnn
2008-05-16 01:20
2008.06.08
Динамически создаваемый TWebBrowser событие OnDownloadComplete?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский