Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

а можно ли так:   Найти похожие ветки 

 
zetta ©   (2002-07-25 14:51) [0]

а можно ли так:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
while not eoff do bgproc;
application.terminate;
if b1 <> 0 then begin c:=b1;
BlockwRite(f2,wrbuf1,b1,b1);end;
Closefile(f2);
Closefile(f1);
end.

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if MessageDlg("Terminate program?", mtwarning, [mbyes,mbno], 0)=mryes then eoff:=true;
end;

bgproc читает с помощью буфера строку из файла, конвертит и забрасывает в другой файл.

более подробный листинг здесь: http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1027522983&n=0
как сделать, чтобы форма была видна?


readstr и wrstr1 вызывают application.ProcessMessages


 
Digitman ©   (2002-07-25 14:53) [1]

нельзя. А смысл всего этого каков ?


 
Skier ©   (2002-07-25 14:59) [2]

>zetta

Не знаю какой смысл во всём этом, но цикл лучше
написать так


while True do
bgproc;
if MessageDlg("Terminate program?", mtwarning,[mbyes,mbno],
0)=mryes then Break;
if b1 <> 0 then begin
c:=b1;
BlockwRite(f2,wrbuf1,b1,b1);
end; //if
end; //while




 
zetta ©   (2002-07-25 15:04) [3]

обработка файла построчно. строку беру из 1го файла, конверчу и кидаю в другой файл. работает - файлы конвертятся, сохраняются, а формы не видать. хотелось бы показывать на ней индикатор.


 
zetta ©   (2002-07-25 15:06) [4]

skier: ага, после каждой обработанной строки спрашивать юзера: "Terminate program?"


 
Skier ©   (2002-07-25 15:08) [5]

>zetta
А чтобы тебе не сделать отдельную форму, в который ты
и будешь всем этим заниматься ?
Создавать,показывать и убивать её будешь сразу
после строчки Application.Initialize;


 
zetta ©   (2002-07-25 15:09) [6]

так какую процедуру вызывать для показывания формы?


 
Skier ©   (2002-07-25 15:21) [7]

>zetta

dpr-файл :


var
FormFileHandling : TFormFileHandling;
begin
Application.Initialize;
FormFileHandling := TFormFileHandling.Create(nil);
try
FormFileHandling.Show;
while FormFileHandling.FileHandling do; //do nothing...
finally
FormFileHandling.Free;
end; //try
Application.CreateForm(TForm1, Form1);
Application.Run;
end.


Флаг FormFileHandling.FileHandling сбрасывается (:=False) как только форма FormFileHandling "обработала" файлы


 
novice_al ©   (2002-07-25 15:30) [8]

ЛЮДИ!!! ВСЁ ОК!!! THANK YOU VERY MUCH!!!


 
Внук ©   (2002-07-25 15:32) [9]

novice_al © (25.07.02 15:30)
Мимо :))))


 
zetta ©   (2002-07-25 15:35) [10]

Skier: не то


 
Skier ©   (2002-07-25 15:36) [11]

>zetta
Что именно ?


 
zetta ©   (2002-07-25 15:50) [12]

кроме формы с индикатором мне никакой другой не надо.
мне просто нужно показать форму и все. файлы уже конвертятся.


 
Skier ©   (2002-07-25 15:56) [13]

>zetta


var
FormFileHandling : TFormFileHandling;
begin
Application.Initialize;
FormFileHandling := TFormFileHandling.Create(nil);
try
FormFileHandling.Show;
while FormFileHandling.FileHandling do; //do nothing...
finally
FormFileHandling.Free;
end; //try
Application.Terminate;
end.


 
zetta ©   (2002-07-25 16:28) [14]

а что за TFormFileHandling9


 
Skier ©   (2002-07-25 16:29) [15]

>zetta
Твоя единственная форма в приложении.


 
zetta ©   (2002-07-25 16:54) [16]

TFormFileHandling как выглядит описание этого типа?


 
Skier ©   (2002-07-25 17:02) [17]

>zetta
Это форма (вместо твоей TForm1)
Сделай у неё флаг FileHandling и всё...

Короче говоря (чтобы было понятней) :


var
Form1 : TForm1;
begin
Application.Initialize;
Form1 := TForm1.Create(nil);
try
Form1.Show;
while Form1.FileHandling do; //do nothing...
finally
Form1.Free;
end; //try
Application.Terminate;
end.


Насколько я понял твоё приложение это просто индикатор
процесса обработки файлов.
Значит как только ты их обработал - делаешь приложению
Application.Terminate и...порядок.



 
zetta ©   (2002-07-25 17:18) [18]

спасибо!!!!!
уррря! заработало!!!


 
zetta ©   (2002-07-25 17:24) [19]

попутная проблема: внутренности перерисовываются, а заголовок - нет. как гада заставить и заголовок перерисовывать?


 
Skier ©   (2002-07-25 17:28) [20]

>zetta
Иногда полезно в цикл вставлять Application.ProcessMessages


 
zetta ©   (2002-07-25 17:34) [21]

он тама есть уже: смотри http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1027522983&n=0 со слов
zetta © (24.07.02 20:13)


 
Skier ©   (2002-07-25 17:40) [22]

>zetta
Я же говорю в цикл !
Где у тебя там Application.ProcessMessages в цикле !?


 
zetta ©   (2002-07-25 17:42) [23]

procedure readstr;
var cc: char;
tot:integer;
begin
if eoff then
exit;
application.ProcessMessages;
s := "";
c := 0;
repeat
if a = total1 then
begin
total1 := fsz - totread;
if total1 < 1 then
begin
eoff := true;
exit;
end
else if total1 > max then
total1 := max;
tot:=total1;
BlockRead(f1,rdbuf, tot, tot);total1:=tot;
a := 0;
end;
a := a + 1;
totread := totread + 1;
cc := rdbuf[a];
if (cc <> chr(10)) and (cc <> chr(13)) then
begin
c := c + 1;
if c=256 then begin
err("error: Line is too long");end;
s:= s+cc;
end;
until cc = chr(13); application.ProcessMessages;
end;

procedure wrstr1;
var c: integer;
procedure wrc (cc: char);
begin
if b1=max then begin
blockwrite(f2,wrbuf1,max,b1);b1:=0;
end;
b1 := b1 + 1;
wrbuf1[b1] := cc;
end;
begin application.ProcessMessages;
for c := 1 to length(s) do
wrc(s[c]);
wrc(chr(13));application.ProcessMessages;
end;

procedure BGProc; //readstr и wrstr1 работают через буфер
var ll:word;
begin
readstr; //зачитывает строку в s
if eoff then
begin
exit;
end;
if s="" then begin wrstr1;exit;end;
if s[1] = "%" then
begin
if not tr then
begin
if findL("%AI5_TargetResolution:") then
begin
s := tr_n;
wrstr1;
tr := true;
end
else
wrstr1; //забрасывает строку s в выходной файл
end
else
wrstr1;
end
else
begin
ll := length(s);
if ll > 3 then
begin
if (s[ll] = "r") and (s[ll - 1] = "A") then
begin
s := ar_n;
wrstr1;
end
else
wrstr1
end
else
wrstr1;
end;

if totread > breaking then
begin
while totread >= breaking do
begin
breaking := breaking + breakst;
pix := pix + pixst;
end;
form1.progressbar1.position:=pix;

end;
end;

а bgproc я вызываю в цикле.


 
Skier ©   (2002-07-25 17:44) [24]

>zetta
В bgproc application.ProcessMessages тоже внеси в цикл.


 
zetta ©   (2002-07-25 17:51) [25]

сейчас попробую


 
zetta ©   (2002-07-25 17:53) [26]

не помогло


 
Skier ©   (2002-07-25 17:58) [27]

>zetta
Ты заголовок формы хочешь перерисовывать ?


 
zetta ©   (2002-07-25 18:01) [28]

да, автоматом не хотит. и чтоб он реагировал на нажатие на кнопочки сворачивания и закрытия окна.


 
Skier ©   (2002-07-25 18:16) [29]

>zetta
перерисовывать заголовок попробуй через
SendMessage(Form1.Handle, WM_NCPAINT, 0, 0)


 
zetta ©   (2002-07-25 18:22) [30]

до лампочки - не вызывает TForm1.FormPaint


 
Skier ©   (2002-07-25 18:24) [31]

>zetta
Причём тут TForm1.FormPaint !?


 
zetta ©   (2002-07-25 18:31) [32]

все равно - до лампочки. как было, так и осталось - внутренности без заголовка.


 
Skier ©   (2002-07-25 18:42) [33]

>zetta
А я вообще не нашёл где у тебя Caption формы
обновляется (присваивается новое значение).
Может покажешь ?


 
Dmitry Toropov   (2002-07-25 18:43) [34]

Думаю, все-же лучше процессинг реализовать в TThread, а начать его (thread) в конструкторе или другом инициализаторе формы. Тогда проблем с перерисовкой не будет и форму можно будет свободно по экрану возить.


 
zetta ©   (2002-07-25 18:47) [35]

только в пропертях формы - в object inspector. больше нигде.


 
Skier ©   (2002-07-25 18:51) [36]

>zetta
Тогда что ты имеешь в виду под ": внутренности перерисовываются, а заголовок - нет" ?
А вообще Dmitry Toropov дело говорит...


 
zetta ©   (2002-07-25 18:52) [37]

самое смешное, что портировал я эту программу из-под доса на макинтошевский think pascal (symantec) за 2 дня, а с делфи уже вторую неделю долбаюсь. на маке исполняемый файл весит 12 кб - с окнами, индикаторами и прочим. прогресс, понимаешь! жаль, что на джаве защита есть для аплетного файлового ввода-вывода. а то писал бы 1 раз для разных платформ и не маялся бы.


 
zetta ©   (2002-07-25 18:58) [38]

попробую с нитями. а под внутренностями перерисовываются я имею ввиду, что все окно с прогрессбаром движущимся и лейблом "Processing...", а капшон не перисовывается и потому и не виден. серое поле, прогрессбар, лейбл и усе.



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

Текущий архив: 2002.08.08;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.013 c
3-23866
BJValentine
2002-07-18 15:48
2002.08.08
ADO ADO ADO


1-24010
anod
2002-07-28 16:32
2002.08.08
TTrackBar


1-24030
Ksion
2002-07-29 01:55
2002.08.08
Где можно достать исходники TNMHTTP. Очень надо!


7-24257
vasilevs2000
2002-05-22 07:23
2002.08.08
При печати шрифт меняется на абракадабру


3-23883
Prog_mail
2002-07-17 12:23
2002.08.08
Помогите, пожалуйста, с UpdateSQL