Конференция "KOL" » изменения в SVN [Delphi, Windows]
 
  • Andrey Korol (08.04.11 16:34) [0]
    Можно ли каким-то образом включить пару мелких патчей в SVN? а то при обновлении их приходиться заново на фалы накатывать.
    KOLmdvDBF.pas:
       
       1)  исправлена сигнатура DBF_dBaseIV - при $04 не открывается сторонними программами
       2) добавлено отключение проверки диапазона, в противном случае валятся ошибки при работе программы
       3) в функции PackDBF добавленно дописывание правильного окончания для DBF файла
       4) исправление в функции NewDbf - создавался файл .dbt даже если memo-поля не используются


    ++ b/Addons/KOLmdvDBF.pas
    @@ -34,7 +34,7 @@ const
       DBF_FoxBASE_            = $FB;
       DBF_dBaseIIIplus        = $03;
       DBF_dBaseIIIplusMemo    = $83;
      DBF_dBaseIV             = $04;
      DBF_dBaseIV             = $03;
       DBF_dBaseIVSQLtable     = $43;
       DBF_dBaseIVSQLsystem    = $63;
       DBF_dBaseIVSQLtableMemo = $CB;
    @@ -326,6 +326,8 @@ function NewmdvDBF(AFileName: String; AutoUpdate: Boolean; ReadOnly: Boolean = F

    implementation

    {$RANGECHECKS OFF}

    function NewmdvDBF(AFileName: String; AutoUpdate: Boolean; ReadOnly: Boolean = False): TKOLmdvDBF;
    begin
       New(Result, Create);
    @@ -1015,6 +1017,7 @@ end;

    procedure TmdvDBF.PackDBF;
    var ReadPos, WritePos, Rec, RecCount: DWord;
    S:string;
    begin
     if FReadOnly then Exit;
     Post;
    @@ -1038,7 +1041,9 @@ begin
     FDBFHeader.RecordCount := RecCount;
     FDBFStream.Seek(0, spBegin);
     FDBFStream.Write(FDBFHeader, SizeOf(TDBFHeader));

    FDBFStream.Seek(0, spEnd);
    S:= #$1A;
    FDBFStream.Write(S[1], 1);
     CurrentRecord:= 0;
    end;

    @@ -1265,12 +1270,12 @@ begin
             NextFree:= 512  div _BlockSize + Ord(512 mod _BlockSize > 0);
             BlockSize:= _BlockSize;
           end;
        end;
         Stream:= NewWriteFileStream(ChangeFileExt(AFileName, '.dbt'));
         Stream.Size:= 0;
         Stream.Write(_DBTHeader , SizeOf(_DBTHeader));
         Stream.Size:= _DBTHeader.NextFree*_DBTHeader.BlockSize;
         Stream.Free;
        end;

       finally
         FreeMem(_DBFFields);


       
       kolTCPSocket.pas:
       1) исправление в функции ReceiveLength - при закрытом сокете возвращалось неправильное значение


    ++ b/Addons/kolTCPSocket.pas
    @@ -597,7 +597,9 @@ end;

    function TTCPClient.ReceiveLength: Integer;
    begin
    ioctlsocket(fhandle,FIONREAD,result);
    if fhandle<>SOCKET_ERROR then
    ioctlsocket(fhandle,FIONREAD,result)
    else result:=0;
    end;

    function TTCPClient.Send(var Buf; const Count: Integer): Integer;



    Или не парить ни себе, ни людям мозг? :D
  • Andrey Korol (08.04.11 16:36) [1]
    не правильно патчи скопировал.  исправляюсь:

    +++ b/Addons/KOLmdvDBF.pas
    @@ -34,7 +34,7 @@ const
        DBF_FoxBASE_            = $FB;
        DBF_dBaseIIIplus        = $03;
        DBF_dBaseIIIplusMemo    = $83;
    -    DBF_dBaseIV             = $04;
    +    DBF_dBaseIV             = $03;
        DBF_dBaseIVSQLtable     = $43;
        DBF_dBaseIVSQLsystem    = $63;
        DBF_dBaseIVSQLtableMemo = $CB;
    @@ -326,6 +326,8 @@ function NewmdvDBF(AFileName: String; AutoUpdate: Boolean; ReadOnly: Boolean = F

    implementation

    +{$RANGECHECKS OFF}
    +
    function NewmdvDBF(AFileName: String; AutoUpdate: Boolean; ReadOnly: Boolean = False): TKOLmdvDBF;
    begin
        New(Result, Create);
    @@ -1015,6 +1017,7 @@ end;

    procedure TmdvDBF.PackDBF;
    var ReadPos, WritePos, Rec, RecCount: DWord;
    +S:string;
    begin
      if FReadOnly then Exit;
      Post;
    @@ -1038,7 +1041,9 @@ begin
      FDBFHeader.RecordCount := RecCount;
      FDBFStream.Seek(0, spBegin);
      FDBFStream.Write(FDBFHeader, SizeOf(TDBFHeader));
    -
    +  FDBFStream.Seek(0, spEnd);
    +  S:= #$1A;
    +  FDBFStream.Write(S[1], 1);
      CurrentRecord:= 0;
    end;

    @@ -1265,12 +1270,12 @@ begin
              NextFree:= 512  div _BlockSize + Ord(512 mod _BlockSize > 0);
              BlockSize:= _BlockSize;
            end;
    -      end;
          Stream:= NewWriteFileStream(ChangeFileExt(AFileName, '.dbt'));
          Stream.Size:= 0;
          Stream.Write(_DBTHeader , SizeOf(_DBTHeader));
          Stream.Size:= _DBTHeader.NextFree*_DBTHeader.BlockSize;
          Stream.Free;
    +      end;

        finally
          FreeMem(_DBFFields);

    +++ b/Addons/kolTCPSocket.pas
    @@ -597,7 +597,9 @@ end;

    function TTCPClient.ReceiveLength: Integer;
    begin
    -  ioctlsocket(fhandle,FIONREAD,result);
    +  if fhandle<>SOCKET_ERROR then
    +  ioctlsocket(fhandle,FIONREAD,result)
    +  else result:=0;
    end;

    function TTCPClient.Send(var Buf; const Count: Integer): Integer;

  • Гость (08.08.11 19:48) [2]
    Andrey Korol
    Выложи плиз поправленные файлы на любой обменник. Очень нужно. Спасибо.
  • Гость (08.08.11 20:16) [3]
    Сорри конечно, но выложенные выше патчи с чем юзать?
  • Гость (08.08.11 20:58) [4]
    Спасибо, сам допетрил.
  • Гость (08.08.11 22:32) [5]
    Кто сталкивался, KOLmdvDBF пишет в файл некий мусор, типа : NUMBERллллллллю■ю■ю■ю■ю■      NUMBER2, словом Excel потом такой файл не открывает. Как бороться?
  • Гость (10.08.11 07:27) [6]
    Спасибо за внесение изменений в SVN (r106)
  • Dufa © (10.08.11 09:02) [7]
    Если бы раньше тема попала на глаза и были готовые файлы, было б быстрее)
 
Конференция "KOL" » изменения в SVN [Delphi, Windows]
Есть новые Нет новых   [134430   +2][b:0][p:0.003]