Mam 3 pytanka ...
-
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?
-
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!
-
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ć??
- 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!