Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.48 MB
Время: 0.015 c
3-89103
explorer
2003-10-08 12:16
2003.10.27
Данные из *.db в MSSQL


1-89321
Jiura23cfdf
2003-10-16 17:50
2003.10.27
Перенос в RichEdit!!


14-89519
Карлсон
2003-10-07 21:45
2003.10.27
два саундтрека для одного фильма на обычном CD.


7-89619
begemot
2003-07-11 15:05
2003.10.27
Размер кластера


14-89568
El
2003-10-07 12:52
2003.10.27
Лицензионная Дельфи - надо или нет?





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