PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Сравнение файлов


Сравнение файлов

Сообщений 1 страница 3 из 3

1

Здравствуйте ! Нужна ваша помощь !!!  Не могу добиться вызова окна Open_Window() с учётом выполнения проверки или запускается постоянно или закрывается совсем ...

проблема в том что в таком варианте в отладчике работает на ура - а когда делаю .exe НЕ ХОЧЕТ ! 
 
Код работает когда :

Код:
If LOF1<>LOF2: ProcedureReturn Open_Window() ; здесь был ноль : EndIf

вот сам код - его поправьте пожалуйста !!!

Код:
Global Pfad1$, Pfad2$ 
 Global FontID2 = LoadFont(2, "Arial", 16) 
 Global FontID3 = LoadFont(3, "Arial", 10) 


 Pfad1$ = "a.txt

 Pfad2$ = "b.txt
 

   Procedure PosWinInfo(Window)    
   If IsWindow(Window)>0  
   TrayWnd = FindWindow_("Shell_TrayWnd", 0)  
   TrayNofifyWnd = FindWindowEx_(TrayWnd, 0, "TrayNotifyWnd", 0)  
   GetWindowRect_(TrayNofifyWnd,@win.RECT) 
     
   Win_x=GetSystemMetrics_(#SM_CXSCREEN)-WindowWidth(Window)-8  
   Win_y=GetSystemMetrics_(#SM_CYSCREEN)-(win\bottom-win\top)-WindowHeight(Window)-4  
   ResizeWindow(Window, Win_x, Win_y, #PB_Ignore, #PB_Ignore)  
   EndIf  
   
   EndProcedure 
   
   Procedure Open_Window() 
   OpenWindow(1,0,0,240,100,"",#PB_Window_BorderLess|#PB_Window_Invisible)  
   PosWinInfo(1)  
   StickyWindow(1, 1) 
   SetWindowColor(1,RGB(229, 0, 99) )  

   TextGadget(1, 0, 10, 240, 50, "В Файл были внесенны изменения", #PB_Text_Center) 
   SetGadgetFont(1, FontID2)  
   SetGadgetColor(1, #PB_Gadget_BackColor, RGB(229, 0, 99))  
   ButtonGadget(2,10,70,100,24,"Закрыть")  
   SetGadgetFont(2, FontID3) 
   
   
   AnimateWindow_(WindowID(1), 800, #SW_SHOWNA)  

  Repeat  
   Event=WaitWindowEvent()  
   Gadget=EventGadget()  
     
   If Event=#PB_Event_Gadget  
   If Gadget=2 
     
     
     CloseWindow(1) 
     Break  
     EndIf 
        
     
 EndIf  

 ForEver 
 
 EndProcedure 

 Procedure FileCompare(Pfad1$,Pfad2$) 
      ; Содержание Сравнение двух файлов 
      ; Result<0        ошибка 
      ; Result=0        Файлы неравные 
      ; Result=1        одинаковы 
       
      Protected LOF1, LOF2, Count, Result, KSize 
       
      KSize=1024*32    
       
       
      LOF1=FileSize(Pfad1$): If LOF1<0: ProcedureReturn -1: EndIf 
      LOF2=FileSize(Pfad2$): If LOF2<0: ProcedureReturn -1: EndIf 
       
      If LOF1<>LOF2: ProcedureReturn Open_Window() : EndIf 
       
      If ReadFile(101,Pfad1$)=0: Result=-1: Goto FileCompareEnd: EndIf 
      If ReadFile(102,Pfad2$)=0: Result=-1: Goto FileCompareEnd: EndIf 
       
       
      *Buffer1=AllocateMemory(KSize): If *Buffer1=0: Result=-1: Goto FileCompareEnd: EndIf 
      *Buffer2=AllocateMemory(KSize): If *Buffer2=0: Result=-1: Goto FileCompareEnd: EndIf 
      CopyMemory(*Buffer1,*Buffer2,KSize) 
       
      Result=1 
      Count=0 
       
       
      While LOF1>Count 
           If (LOF1-Count)>KSize 
                FileSeek(101,Count): ReadData(101,*Buffer1,KSize) 
                FileSeek(102,Count): ReadData(102,*Buffer2,KSize) 
                Count+KSize 
                 
              Else 
                FileSeek(101,Count): ReadData(101,*Buffer1,LOF1-Count) 
                FileSeek(102,Count): ReadData(102,*Buffer2,LOF1-Count) 
                Count=LOF1 
                 
              EndIf 
           
           If CompareMemory(*Buffer1,*Buffer2,KSize)=0 
                Result=0 
                Count=LOF1 
                 
              EndIf 
      Wend 
       
      FileCompareEnd: 
       
       
      CloseFile(101) : CloseFile(102) 
      FreeMemory(*Buffer1): FreeMemory(*Buffer2) 
       
      ProcedureReturn Result 
       
    EndProcedure    


     
     
    Repeat      
   
      TimeNEW = TimeNEW + ElapsedMilliseconds() - TimeOLD  
      TimeOLD = ElapsedMilliseconds() 
      If TimeNEW > 21 
         For i = 1 To TimeNEW 
              If  Pfad1$ <> Pfad2$ 
                  Debug FileCompare(Pfad1$,Pfad2$) 
                  ;Break 
                   
                  TimeClr = 1 
                EndIf 
                Delay(1000) 
         Next 
      EndIf 
      If TimeClr = 1: TimeNEW = TimeNEW % 22: TimeClr = 0: EndIf 
   
 Until Event=#PB_Event_CloseWindow

куда или как правильно вставить Open_Window() - плиз
Заранее спасибо

Отредактировано kaaamid (09.01.2013 04:30:45)

0

2

Чтобы после компиляции окно появлялось, убери debug перед вызовом FileCompare(Pfad1$,Pfad2$)

0

3

КЭС
Спасибо !!! Вопрос закрываю - уже разобрался !!! :)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Сравнение файлов