Форум: "Основная";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
ВнизОшибка сохранения файла!? Найти похожие ветки
← →
XAMLO (2003-10-14 20:16) [0]почему у меня в дельфи 7 возникает такая оибка:
я записываю в файл при помощи blockwrite,
далее я узнаю filepos(равняется 25)
потом закрываю файл, и он вместо того чтобы весить 25 байт, весит 3Кб! почемы это происходит и как от этого избавиться????
← →
clickmaker (2003-10-14 20:21) [1]Код ?
← →
With Out Any ... (2003-10-14 20:25) [2]Загляни в файл, что в нем (HexView-ером)
← →
XAMLO (2003-10-14 20:26) [3]Дать код всей программы????
← →
XAMLO (2003-10-14 20:27) [4]я уже смотрел! те первые 25 байт записаны верно, дальше бред всякий
← →
clickmaker (2003-10-14 20:29) [5]
> XAMLO (14.10.03 20:26) [3]
> Дать код всей программы????
Не стоит. Код, где происходит собссно запись
← →
XAMLO (2003-10-14 20:33) [6]подожди, я свой НТФС прочту, а то я в 98
← →
XAMLO (2003-10-14 20:36) [7]я всю прогу всавил, мне так проще, птому что там по процедурам разбито
program mini_klei;
//{$APPTYPE CONSOLE}
{$R mini_klei.res}
uses
windows, system;
//----------Functions---------------
function CardtoStr(car:cardinal):string;
var i,ct:cardinal;
otv:string;
begin
otv:="";ct:=car;i:=0;
repeat
i:=i+1;
otv:=chr((ct) mod(256))+otv;
ct:=(ct)div(256);
until ct=0;
if i<4 then begin
for ct:=(i+1) to 4 do
otv:=chr(0)+otv;
end;
result:=otv;
end;
function stepen(m,s:word):cardinal;
var i,c:integer;
begin
c:=1;
for i:=1 to s do
c:=c*m;
if s=0 then c:=1;
result:=c;
end;
function StrtoCard(s:string):cardinal;
var i,c:cardinal;
begin
c:=0;
for i:=0 to 3 do
c:=c+ord(s[4-i])*stepen(256,i);
result:=c;
end;
function ItoS(k:integer):String;
var g,zn:integer;
c:char;
s:String;
begin
zn:=k;
repeat
g:=(zn)mod(10);
zn:=(zn)div(10);
if g=1 then c:="1";
if g=2 then c:="2";
if g=3 then c:="3";
if g=4 then c:="4";
if g=5 then c:="5";
if g=6 then c:="6";
if g=7 then c:="7";
if g=8 then c:="8";
if g=9 then c:="9";
if g=0 then c:="0";
s:=c+s;
until zn=0;
Result:=s;
end;
//------------PROCEDURES--------------
//описание:
// ReadValue(пароль для расшифровки,абсолютный путь_
// _к файлу в который записать значение,переменные: длина,_
//_файл из которого идет чтение, значение(ответ))
procedure ReadValue(cryptP,abspath:string;fos:boolean;var dlin:cardinal;var f:file;var valu:string);
var fn:file of byte;
i,j,k,z:cardinal;
arr:array[1..100]of byte;
tmpstr:string;
begin
if fos then begin
//-----Если стоит опция файла-----
system.assignFile(fn,abspath);
system.Rewrite(fn);
Blockread(f,arr,4,k);
tmpstr:=chr(arr[1])+chr(arr[2])+chr(arr[3])+chr(arr[4]);
i:=StrtoCard(tmpstr);z:=0;
for j:=1 to i do begin
z:=z+1;
BlockRead(f,arr,1,k); arr[1]:=arr[1]-ord(cryptp[z]);
BlockWrite(fn,arr,1);
if z=length(cryptp) then z:=0;
end;
dlin:=i;
//------конец части опции файла---
end
else
begin
//------Если опция строки-------
Blockread(f,arr,4,k);
tmpstr:=chr(arr[1])+chr(arr[2])+chr(arr[3])+chr(arr[4]);
i:=StrtoCard(tmpstr);z:=0;
dlin:=i;valu:="";
for j:=1 to i do begin
z:=z+1;
BlockRead(f,arr,1);
arr[1]:=arr[1]-ord(cryptp[z]);
valu:=valu+chr(arr[1]);
if z=length(cryptp) then z:=0;
end;
//-------конец опции строки-----
end;
end;
procedure WriteValue(cryptP,abspath:string;fos:boolean;var dlin:cardinal;var f:file;valu:string);
var fn:file of byte;
i,j,k,z:cardinal;
arr:array[1..4]of byte;
arrt:array[1..1]of byte;
tmpstr:string;
begin
if fos then begin
//-----Если стоит опция файла-----
system.assignFile(fn,abspath);
i:=system.FileSize(fn);
system.Reset(fn);
tmpstr:=CardtoStr(i);
arr[1]:=ord(tmpstr[1]);
arr[2]:=ord(tmpstr[2]);
arr[3]:=ord(tmpstr[3]);
arr[4]:=ord(tmpstr[4]);
BlockWrite(f,arr,4,k);
z:=filepos(f);
writeln(itos(z));
z:=0;
for j:=1 to i do begin
z:=z+1;
BlockRead(fn,arr,1); arr[1]:=arr[1]+ord(cryptp[z]);
BlockWrite(f,arr,1);
if z=length(cryptp) then z:=0;
end;
dlin:=i;
//------конец части опции файла---
end
else
begin
//------Если опция строки-------
i:=length(valu);
tmpstr:=CardtoStr(i);
arr[1]:=ord(tmpstr[1]);
arr[2]:=ord(tmpstr[2]);
arr[3]:=ord(tmpstr[3]);
arr[4]:=ord(tmpstr[4]);
Blockwrite(f,arr,4,k);
// writeln("записана строка:"+tmpstr+" что означает:");
z:=filepos(f);
// writeln(itos(z));
z:=0;
dlin:=i;
for j:=1 to i do begin
z:=z+1;
arrt[1]:=ord(valu[j]);
arrt[1]:=arrt[1]+ord(cryptp[z]);
// writeln("nachalos");
Blockwrite(f,arrt,1,k);
if z=length(cryptp) then begin z:=0;end;
end;
//-------конец опции строки-----
end;
end;
//--------|||---PROGRAM-START---------||
var fi,fk:file;
i:cardinal;
s:string;
P:PChar;
begin
assignfile(fi,"c:\test2.txt");
rewrite(fi);
writevalue("moipassword"," ",false,i,fi,"etastrokabudetdlinnoi");
// writeln("napisano:"+itos(i));
i:=filepos(fi);
p:=PChar(itos(i));
messagebox(0,p,PChar("ky ky"),4);
// writeln("na samom dele:"+itos(i));
sleep(5000);
halt(1);
closefile(fi);
i:=filepos(fi);
p:=PChar(itos(i));
messagebox(0,p,PChar("ky ky"),4);
// writeln("zaisan");
// assignfile(fk,"c:\test1.txt");
// reset(fk);
// readvalue("moipassword"," ",false,i,fk,s);
// writeln("nichego");
// closefile(fk);
// writeln(s);
// readln;
{ TODO -oUser -cConsole Main : Insert code here }
end.
← →
XAMLO (2003-10-14 20:39) [8]Да , изначально там halt не стоял, это я потом добавил
← →
XAMLO (2003-10-14 20:50) [9]Ну, отвечать кто нибудь будет?????
← →
app (2003-10-14 20:56) [10]Тебе что делать нечего, или думаешь тут место резиновое, достаточно было опубликовать только относящее к операция записи и объявление.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c