У меня в ящике начинают накапливаться вопросы. Это говорит о том, что многие приходят на страничку не просто так, а народ действительно интересуется. Начиная с этого номера, я ввожу новый раздел "Каком к верху", в котором буду публиковать ответы на вопросы "Как?". Если ты хочешь задать свой вопрос, то пиши мне сюда Почтальон. Пожалуйста, конкретизируй свои вопросы. Если твои вопросы будут маленькими и конкретными, то они попадут сюда, и ты их увидишь очень скоро. Иначе мне придётся писать отдельную статью, а такого у меня очень много и не известно, когда я напишу тебе ответ.
Как определить размер файла?
Для этого есть три способа. Первый - открыть файл и перейти в конец. Переход по файлу возвращает текущую позицию, а раз текущая позиция это конец, то это и будет размер:
var
f:HFILE;
FileSize:Integer;
begin
// Открываем файл только для чтения (этого достаточно)
f:=_lopen(PChar(FileName), OF_READ);
// Получаем размер файла
FileSize :=_lseek(f,0, FILE_END);
//Закрываем файл
_lclose(f);
end;
Второй способ - через поиск, который так же возвращает размер.
var
SearchRec:TSearchRec;
Begin
// Ищем файл
if FindFirst(ExpandFileName(FileName),faAnyFile,SearchRec)=0
// Забираем размер
FilrSize:=SearchRec.Size
//Закрываем поиск
FindClose(SearchRec);
end;
Третий способ - это получить размер файла напрямую через функцию GetFileSize.
function GetFileSize(
hFile: THandle;
lpFileSizeHigh: Pointer)
: DWORD; stdcall;
В качестве первого параметра будет указатель на файл, а второй - указатель на число DWORD, куда засунут старший байт размера файла. Не пугайся, старший байт тебе врятли понадобиться, очень редко встречаются файлы больше 2 гига. Поэтому можно смело использовать в качестве второго параметра nil.
Как мне быстро очистить Canvas у Bitmap?
Очень даже просто, просто закрасить белым или другим цветом.
Как написать тест внутри Bitmap с прозрачным фоном?
Для этого нужно просто выставить у Bitmap стиль закраски Brush.Style в bsClear
begin
//Выставляем цвет текста
Image1.Picture.Bitmap.Canvas.Font.Color := clBlue;
//Выставляем прозрачную закраску
Image1.Picture.Bitmap.Canvas.Brush.Style:=bsClear;
Image1.Picture.Bitmap.Canvas.TextOut(1, 1, 'Прозрачная надпись');
Как мне узнать полный путь к запущенной мной программе?
Имя запущенной проги храниться в Application.ExeName. Чтобы вытащить путь нужно использовать функцию ExtractFilePath. Вот пример:
Str:=ExtractFilePath (Application.ExeName);
После этого, в переменной Str будет путь к твоей проге.
Как из иконки сделать Bitmap?
Вот тебе работающая процедура. Все функции используемые здесь мы уже проходили, поэтому я даже не буду приводить комментарии.
var
Icon : TIcon;
begin
Icon := TIcon.Create;
Icon.LoadFromFile('Имя файла с исонкой');
Bitmap.Height := Icon.Height;
Bitmap.Width := Icon.Width;
Bitmap.Canvas.Draw(0, 0, Icon);
Icon.Free;
end;
На сегодня хватит. Это были наиболее интересные вопросы. Напоминаю, если ты хочешь задать вопрос, то пиши его сюда: Почтальон.