-
Можно ли каким-то образом включить пару мелких патчей в 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
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
-
не правильно патчи скопировал. исправляюсь:
+++ 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
+
+
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;
-
Andrey Korol Выложи плиз поправленные файлы на любой обменник. Очень нужно. Спасибо.
-
Сорри конечно, но выложенные выше патчи с чем юзать?
-
Спасибо, сам допетрил.
-
Кто сталкивался, KOLmdvDBF пишет в файл некий мусор, типа : NUMBERллллллллю■ю■ю■ю■ю■ NUMBER2, словом Excel потом такой файл не открывает. Как бороться?
-
Спасибо за внесение изменений в SVN (r106)
-
Если бы раньше тема попала на глаза и были готовые файлы, было б быстрее)
|