autoodtwarzanie, kopiowanie, czcionki

0

Mam 3 pytanka ...

  1. W programie zastosowałem dość nie typowe czcionki i na komputerze w którym nie ma zainstalowanych takowych czcionek prgrogram sam zmieni czcionkę napisu... czy da się jakoś skompilować program razem z czcionkami w opcjach delphi albo inaczej??... tak aby bez względu na to czy czcionka jest czy jej nie ma na danych komputerze napisa zawsze byłe tego zsamego kroju, jeżeli tak to jak?

  2. W Windowsie znajduje się taka opcja jak autoodtwarzanie... jak zrobić w delphi aby program wykrywał włożenie płyty do napędu CD-ROM(w komputerze znajduję się wiele CD-ROM-ów), a następnie wyszukiwał na płycie odpowiedni plik!

  3. Dlaczego podczas kopiowania pliku z użyciem:

[code]CopyFile('C:\gry.zip','C:\Windows\Pulpit\gry.zip',True);[/code]

program przestaje reagować na polecenia użytkonika?, i jak to zmienić??

  1. Jak zrobić aby postęp kopiowania był pokazany w progressbar, użyłem:

[code]var
Buf : array[1..4096] of Byte;
NumRecsRead, // ilość rekordów odczytanych za jednym razem
Pos : Integer; // postęp w kopiowaniu
InFile,OutFile : file;
Begin
Pos:= 0;
AssignFile(InFile, ' Plik.txt' );
AssignFile(OutFile, ' Kopia Plik.txt' );
Reset(InFile,1);
Rewrite(OutFile,1);
while not Eof(InFile) do
begin
BlockRead(InFile, Buf, SizeOf(Buf), NumRecsRead);
BlockWrite(OutFile, Buf, NumRecsRead);
Pos:=Pos + NumRecsRead;
ProgressBar.Position:= Pos;
end;
CloseFile(InFile);
CloseFile(OutFile);
end;[/code]

lecz ten kod jest błędny gdyż progressbar najpier się zapełnia do końca a dopiero później program zaczyna kopiować plik i w efekcie nie jest to rzeczywisty postęp w kopiowaniu pliku, użyłem również:

[code]procedure TMain.CopyClick(Sender: TObject);
const
SrcPath = 'C:flash.rar';
DstPath = 'C:flash-kopia.rar';
var
Src, Dst : File;
FSize : Integer;
RealSize : Integer;
Buffer: array[0..1024] of char;
TotalSize : Integer;
begin
TotalSize := 0;
AssignFile(Src, SrcPath);
try
Reset(Src, 1); // otwieramy plik źródłowy
AssignFile(Dst, DstPath);
try
ReWrite(Dst, 1); // tworzymy nowy plik
FSize := FileSize(Src); // określamy rozmiar pliku źródłowego
Progress.Max := FSize;
{ pętla odczytuje określone porcje danych a następnie te porcje
zapisuje do nowego pliku }
repeat
// odczytaj 1 kB danych
BlockRead(Src, Buffer, SizeOf(Buffer), RealSize);

if RealSize > 0 then // jeżeli odczytany rozmiar jest większy od zera... 
begin 
{ dodaj do zmiennej TotalSize } 
 TotalSize := TotalSize + RealSize; 
{ zapisz odczytaną porcję danych do pliku przeznaczenia } 
 BlockWrite(Dst, Buffer, RealSize); 
 Progress.Position := TotalSize; 
end; 

until RealSize = 0;
finally
CloseFile(Dst);
end;
finally
CloseFile(Src);
end;
end;[/code]

dzieje się to samo, jak zrobić aby rzeczywisty postęp w kopiowaniu pliku był pokazany w progressbar oraz w guage tak aby program w czasie kopiowania reagował na polecenia użytkownika?

Dzięki i Pozdrowionka!

0

ad. 1 http://www.4programmers.net/view.php?id=189
ad. 4 http://4programmers.net/view_faq.php?id=30

A tak poza tym to istnieje taki przycisk <font color="red">[b]SZUKAJ[/b]</span> !!

0

Ad. 3 Dlaczego nie reaguje to nie wiem, ale może wątki pomogą TThread + F1

1 użytkowników online, w tym zalogowanych: 0, gości: 1