Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при сохранении файла   Найти похожие ветки 

 
smartleds   (2008-12-17 20:39) [0]

Господа подскажите в чем может быть проблема, сохраняю файл при помощи стандартного диалога.
Вылазит ошибка "Project xxx.exe raised exception class EAccess Violation with message Access violation at address XXXX in module xxx.exe".
При пошаговой отладке ошибка возникает в строчке form2.SaveDialog2.Execute
уже все облазил чего ей не нравится не пойму.

var cfilename,binfilename:string;
var cfile:textfile;
//========================-Save  FILE-==============
form2.savedialog2.initialdir:="f:\DELPH\Array\";
if form2.SaveDialog2.Execute then  <=!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                 begin
               cfilename:= form2.Savedialog2.Filename+".c";
               AssignFile(cfile,cfilename);
               rewrite(cfile);
                 end;


 
Сергей М. ©   (2008-12-17 20:50) [1]

Эти чудеса где происходят - в обработчике клика какой-то кнопки, лежащей на form2 ?


 
smartleds   (2008-12-17 20:55) [2]

Да , совершенно верно , у меня есть кнопка Save As , часть процедуры обработки которой я выложил выше


 
Anatoly Podgoretsky ©   (2008-12-17 21:00) [3]

Тогда зачем form2.
И зря ты шифруешь цифры под XXXX


 
smartleds   (2008-12-17 21:07) [4]

не шифрую сейчас спишу
Violation with message Access violation at address 004021А6 in module xxx.exe".
Write of address 00000004
Причем эти адреса всегда одинаковые
Убрал form2 не помогло.


 
Leonid Troyanovsky ©   (2008-12-17 21:09) [5]


> Anatoly Podgoretsky ©   (17.12.08 21:00) [3]

> И зря ты шифруешь цифры под XXXX

Дык, клубника ж там.

--
Regards, LVT.

PS Ставлю 2 бита на то, что savedialog2 д.б. создать Пушкин.


 
Leonid Troyanovsky ©   (2008-12-17 21:11) [6]


> smartleds   (17.12.08 21:07) [4]

> in module xxx.exe".

- Во, опять! [ДВ]

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-12-17 21:11) [7]

> smartleds  (17.12.2008 21:07:04)  [4]

Это говорит о том, что какой то объект не создан


 
Anatoly Podgoretsky ©   (2008-12-17 21:13) [8]

И без знания заголовка метода.
Какой то странный автор, не человек, а загадка.


 
Leonid Troyanovsky ©   (2008-12-17 21:13) [9]


> smartleds   (17.12.08 21:07) [4]

> Убрал form2 не помогло.

Оное помогает лишь по-крупному.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-12-17 21:14) [10]


> Anatoly Podgoretsky ©   (17.12.08 21:13) [8]

> Какой то странный автор, не человек, а загадка.

Это ж мистер ХХХ.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-12-17 21:15) [11]

> Leonid Troyanovsky  (17.12.2008 21:14:10)  [10]

Навевает на странные мысли.


 
smartleds   (2008-12-17 21:27) [12]

На форме 2 иконка SaveDialog расположена.
Заметил закономерность у меня на форме 1 тоже есть кнопка SaveAs1, это глюк возникает только тогда когда я перед нажатием SaveAs2 на форме 2, нажимаю SaveAs1 на форме 1. Если сначало нажать на SaveAs2, то все работает.
PS. Я написал вместо названия файла ХХХ только потому что оно у меня длинное содержит дату , номер версии и др информацию, а поскольку из окна ошибки copy/paste не работает пришлось все переписывать на бумажку, и я посчитал что из-за названия файла ошибки быть не может и заменнил на более простое


 
Anatoly Podgoretsky ©   (2008-12-17 21:31) [13]

Значит там ошибка.


 
Anatoly Podgoretsky ©   (2008-12-17 21:32) [14]

> smartleds  (17.12.2008 21:27:12)  [12]

Ты бы поинтересовался, что означет xxx, например на www.xxx.com


 
smartleds   (2008-12-17 21:37) [15]

В SaveAs 1?
Вот ее процедура , тоже самое что и в SaveAs2 , только здесь оформлено в виде дополнительной функции SaveAs, которая вызывается при нажатии кнопки SaveAs1.

procedure  SaveAs (data_sizesave:integer) ;
var cfilename,binfilename:string;
var cfile:textfile;
var binaryfile:file of byte;
var i:integer;
begin

SetLength(scriptarray,data_sizesave);
scriptarray[10]:=1;
//========================-OUTPUT C FILE-==============
form1.savedialog1.initialdir:="f:\DELPH\Script_Array\";
form1.SaveDialog1.Execute;
cfilename:= form1.Savedialog1.Filename+".c";
AssignFile(cfile,cfilename);
rewrite(cfile);

for i:=0 to length(scriptarray)-2 do
    begin
    write(cfile, scriptarray[i]);
    write(cfile,",");
    end;
   
write(cfile, scriptarray[length(scriptarray)-1]);
closeFile(cfile);
//====================-OUTPUT BINARY FILE-==========
binfilename:=form1.Savedialog1.Filename+".bin";
AssignFile(binaryfile,binfilename);
rewrite(binaryfile);
for i:=0 to length(scriptarray)-1 do
    write(binaryfile, scriptarray[i]);
closeFile(binaryfile);
end;


 
Leonid Troyanovsky ©   (2008-12-17 21:38) [16]


> smartleds   (17.12.08 21:27) [12]

>  а поскольку из окна ошибки copy/paste не работает

Ctrl-C, Ctrl-V - нормально работают, даже из окна дебагера.

А как там мои два бита?

--
Regards, LVT.


 
smartleds   (2008-12-17 21:42) [17]

Да не работает , ничего выделить нельзя , я ведь тоже сначало пробовал скопировать.
Он создан
type
 TForm2 = class(TForm)
   OpenDialog2: TOpenDialog;
   Button1: TButton;
   Button2: TButton;
   Memo1: TMemo;
   Label1: TLabel;
   Button3: TButton;
   SaveDialog2: TSaveDialog;  <===========================!!!!!!!
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Button3Click(Sender: TObject);


 
Leonid Troyanovsky ©   (2008-12-17 21:45) [18]


> smartleds   (17.12.08 21:37) [15]

> В SaveAs 1?

Да везде, где мы видели.
Про Form1 ты уж предупрежден.

На второе: нечего мешать регулярные (обычные) процедуры с методами. Тогда, например, и не будет искусов пользовать Form1.

А как там мои два бита?

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-12-17 21:46) [19]


> smartleds   (17.12.08 21:42) [17]

> Да не работает , ничего выделить нельзя ,

В диалоге ничего выделять и не надо.
А в окне отладчика - лишь встать на строку.

--
Regards, LVT.


 
smartleds   (2008-12-17 21:59) [20]

Выкинул процедуру SaveAs , ее код вставил в обработчик кнопки SaveAs1 на форме 1, результат глюк не исчез.
Про два бита я не понял
[5]  Ставлю 2 бита на то, что savedialog2 д.б. создать Пушкин.
Так я savedialog2 на форме 2 создал.


 
Leonid Troyanovsky ©   (2008-12-17 22:07) [21]


> smartleds   (17.12.08 21:59) [20]

> Так я savedialog2 на форме 2 создал.

А на Form1 чего?

И хватит загадок: приводи код _минимально_  достаточный
для воспроизведения проблемы.
Дабы любопыствующий мог оное воспроизвести без напрягов.

Иначе, так и останешься мистером ХХХ ;)

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-12-17 22:11) [22]


> Leonid Troyanovsky ©   (17.12.08 22:07) [21]

> И хватит загадок: приводи код _минимально_  достаточный

Кхм, забыл подчеркнуть "достаточный", sorry.

--
Regards, LVT.


 
smartleds   (2008-12-17 22:17) [23]

На Form1 savedialog1 тоже создал
вот обработчик кнопки SaveAs1
procedure TForm1.Button9Click(Sender: TObject);
var k,i,j,curbeginheaderinfile,curbeginchannelA,curchannelsizeA:integer;
var lowbyte,middlebyte,highbyte:byte;

begin
curbeginscript:=addrbeginscript; //--> const =1000
//==============- Write Absolut address current Script -=====
SetLength(scriptarray,1000000);
//------------- Write adress begin script --------------
highbyte:=curbeginscript div 65536;
middlebyte:=(curbeginscript div 256) mod 256;
lowbyte:=curbeginscript mod 256;

curpos:=beginscript_links;
scriptarray[curpos]:=highbyte;
curpos:=curpos+1;
scriptarray[curpos]:=middlebyte;
curpos:=curpos+1;
scriptarray[curpos]:=lowbyte;
//---------------- Write amount scene ----------
curpos:=addrbeginscript;
highbyte:=amount_scene div 256;
lowbyte:= amount_scene mod 256;
scriptarray[curpos]:=highbyte;
curpos:=curpos+1;
scriptarray[curpos]:=lowbyte;
curpos:=curpos+1;
scriptarray[curpos]:=0; //reserv byte
curpos:=curpos+1;
//----------------- Write amount channels ---------
Memo1.Lines.Append("curpos="+inttostr(curpos)+"  ");
highbyte:=amount_channels div 256;
lowbyte:=amount_channels mod 256;
scriptarray[curpos]:=highbyte;
curpos:=curpos+1;
scriptarray[curpos]:=lowbyte;
curpos:=curpos+1;
scriptarray[curpos]:=0; //reserv byte
curpos:=curpos+1;
//---------------- write amount repeat  script ---------
scriptarray[curpos]:=0; // if 0 is besconechno
curpos:=curpos+1;
//---------------- write amount service arrays for colomn ---------
scriptarray[curpos]:=asarr_string; //
curpos:=curpos+1;
Memo1.Lines.Append("curpos1="+inttostr(curpos)+"  ");
//---------------- write amount service arrays for string ---------
scriptarray[curpos]:=asarr_colomn; //
curpos:=curpos+1;
Memo1.Lines.Append("curpos1="+inttostr(curpos)+"  ");
//--------------- Write reserv 12 byte ------------

//for i:=0 to asarr_colomn-3 do
for i:=0 to headersize-9-1 do
  begin
scriptarray[curpos]:=0; //1
curpos:=curpos+1;
  end;
Memo1.Lines.Append("curpos2="+inttostr(curpos)+"  ");
begin_data:=addrbeginscript+headersize;
//-----------------------
writedata(begin_data,amount_scene+asarr_string,amount_channels+asarr_colomn);
//--------------------
data_size:=addrbeginscript+headersize+( (amount_scene+asarr_string)*(amount_channels+asarr_colomn) );
form1.Memo1.Lines.Append("data_size="+inttostr(data_size)+"  ");
SaveAs(data_size);
//----------------------------
end;
процедура SaveAs
procedure  SaveAs (data_sizesave:integer) ;
var cfilename,binfilename:string;
var cfile:textfile;
var binaryfile:file of byte;
var i:integer;
begin

SetLength(scriptarray,data_sizesave);
scriptarray[10]:=1;
//form1.Memo2.Lines.Append(" curscript="+IntToStr(curscript)+"  ");

//========================-OUTPUT C FILE-==============
form1.savedialog1.initialdir:="f:\DELPH\Script_Array\";
//form1.savedialog1.defaultext:="c";
form1.SaveDialog1.Execute;
cfilename:= form1.Savedialog1.Filename+".c";
AssignFile(cfile,cfilename);
rewrite(cfile);

for i:=0 to length(scriptarray)-2 do
    begin
    write(cfile, scriptarray[i]);
    write(cfile,",");
    end;

write(cfile, scriptarray[length(scriptarray)-1]);
closeFile(cfile);
//====================-OUTPUT BINARY FILE-==========
binfilename:=form1.Savedialog1.Filename+".bin";
AssignFile(binaryfile,binfilename);
rewrite(binaryfile);
for i:=0 to length(scriptarray)-1 do
    write(binaryfile, scriptarray[i]);
closeFile(binaryfile);
end;

Код обработчика кнопки SaveAs2
procedure TForm2.Button3Click(Sender: TObject);

var cfilename,binfilename:string;
var cfile:textfile;
var binaryfile:file of byte;
var i:integer;
begin
Memo1.Lines.Append(" offset="+IntToStr(offset)+"  ");
//========================-OUTPUT C FILE-==============
savedialog2.initialdir:="f:\DELPH\Script_Array\";
if SaveDialog2.Execute then
                 begin
               cfilename:= Savedialog2.Filename+".c";
               AssignFile(cfile,cfilename);
               rewrite(cfile);
                 end;

SetLength(scriptarray,offset);
for i:=0 to length(scriptarray)-2 do
    begin
    write(cfile, scriptarray[i]);
    write(cfile,",");
    end;

write(cfile, scriptarray[length(scriptarray)-1]);
closeFile(cfile);
//====================-OUTPUT BINARY FILE-==========
binfilename:=Savedialog2.Filename+".bin";
AssignFile(binaryfile,binfilename);
rewrite(binaryfile);
for i:=0 to length(scriptarray)-1 do
    write(binaryfile, scriptarray[i]);
closeFile(binaryfile);

form2.close;
Application.Terminate;
end;


 
Amoeba ©   (2008-12-17 22:27) [24]


> smartleds   (17.12.08 22:17) [23]

Ты бы хоть отформатировал свой код, а то разбираться с ним тяжко.


 
Leonid Troyanovsky ©   (2008-12-17 22:29) [25]


> smartleds   (17.12.08 22:17) [23]

> На Form1 savedialog1 тоже создал
> вот обработчик кнопки SaveAs1
> procedure TForm1.Button9Click(Sender: TObject);

Не верь глазам своим :)

А, чего пользоваться кнопой "код" не обучены-с?
И любопытствующим уготовано продираться через тернии?

Ну, ладно, завтра, бог даст, полюбопытствуем.
Если, конечно, до завтра не расколят ;)

И, чего, приведеннное, дейс-но, так и скомпилируется?
Любопытно.

--
Regards, LVT.


 
Amoeba ©   (2008-12-17 22:37) [26]

Автору вопроса. Скачай и установи форматировщик кода:
http://www.aew.wur.nl/UK/Delforexp/


 
Leonid Troyanovsky ©   (2008-12-17 22:38) [27]


> Leonid Troyanovsky ©   (17.12.08 22:11) [22]

> Кхм, забыл подчеркнуть "достаточный", sorry.

Гм, опять ошибка -  надо: минимальный, но компилируемый код.
Может так будет понятней :)

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-12-17 22:38) [28]

> Amoeba  (17.12.2008 22:27:24)  [24]

C отформатированым будет не легче.


 
Leonid Troyanovsky ©   (2008-12-17 22:57) [29]


> Anatoly Podgoretsky ©   (17.12.08 22:38) [28]

> C отформатированым будет не легче.

Во, сформулировал:
"Если вопрошающий ожидает реальной помощи,
то он проделает всю необходимую работу для
облегчения участи отвечающих"

Хотя, наверняка, было это и в хауаск - нехочу перечитывать :(

Вот и ссыл для заинтересованных лиц:
http://ln.com.ua/~openxs/articles/smart-questions-ru.html

--
Regards, LVT.


 
smartleds   (2008-12-17 22:58) [30]

Я понял буду выкидывать из программы постепенно все не относящиеся к глюку, пока не выкрестализируется ошибка, тогда уже к вам обращусь


 
Anatoly Podgoretsky ©   (2008-12-17 23:00) [31]

> Leonid Troyanovsky  (17.12.2008 22:57:29)  [29]

Было там такое и еще жестче, но мысль эта.


 
Leonid Troyanovsky ©   (2008-12-17 23:07) [32]


> Anatoly Podgoretsky ©   (17.12.08 23:00) [31]

> Было там такое и еще жестче

Какой удар со стороны классиков :)

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-12-17 23:11) [33]

> Leonid Troyanovsky  (17.12.2008 23:07:32)  [32]

Там два смысла

1. а оно нам нужно, если ты даже не хочешь применить минимум усилий.
2. приведи подробную информацию, а мы подумаем стоит ли тратить на тебя время.

В те времена это было важно, каналы были узкие, оплата по времени. А то и вообще или BBS или FIDO
Это сейчас можно трепаться без ущерба бюджету и здоровью.


 
Leonid Troyanovsky ©   (2008-12-17 23:20) [34]


> Anatoly Podgoretsky ©   (17.12.08 23:11) [33]

> В те времена это было важно, каналы были узкие, оплата по

Оказывается, это и сейчас актуально.
Видимо, в этом и есть сермяжный смысл :)

--
Regards, LVT.


 
Германн ©   (2008-12-18 01:07) [35]


> Leonid Troyanovsky ©   (17.12.08 22:57) [29]
>
>

Этот "ссыл" читают только те, кому это не нужно, поскольку они и так умеют задавать вопросы. И им просто интересно смог ли "какой-то умник" придумать то, что они до сих пор не знали?
:)


 
Правильный$Вася   (2008-12-18 11:03) [36]

if SaveDialog2.Execute then
                begin
              cfilename:= Savedialog2.Filename+".c";
              AssignFile(cfile,cfilename);
              rewrite(cfile);
                end;

SetLength(scriptarray,offset);
for i:=0 to length(scriptarray)-2 do
   begin
   write(cfile, scriptarray[i]);
   write(cfile,",");
   end;

а это конструкциям мне просто нравится
если юзер нажмет отмену, что будет?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.053 c
9-1176566300
ElectriC
2007-04-14 19:58
2009.02.01
Класс камеры DIrectX


2-1229781670
programmer90
2008-12-20 17:01
2009.02.01
Excel


11-1197050289
Jon
2007-12-07 20:58
2009.02.01
TrayIcon PopupEx


1-1206708636
Jolik
2008-03-28 15:50
2009.02.01
какие накладные расходы у try except end?


2-1229802885
sokol
2008-12-20 22:54
2009.02.01
подскажите мою ошибку. программа считает кол-во слов в тексте





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