Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Автопереименование [D7, WinXP]


Volume ©   (2005-05-20 17:32:00) 

Как сделать, чтобы при обнаружении файла с именем 1.bmp программа сохраняла картинку под именем 2.bmp и так далее?
Использую код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
 DC: HDC;
 Canva: TCanvas;
 B: TBitmap;
begin
 Canva := TCanvas.Create;
 B := TBitmap.Create;
 DC := GetDC(0);
 try
   Canva.Handle := DC;
   with Screen do
   begin
     B.Width := Width;
     B.Height := Height;
     B.Canvas.CopyRect(Rect(0, 0, Width, Height),
     Canva, Rect(0, 0, Width, Height));
     B.SaveToFile('c:\1.bmp');
   end
 finally
   ReleaseDC(0, DC);
   B.Free;
   Canva.Free
 end

end;


Virgo_Style   (2005-05-20 19:24:00) [1]

Убери многоточия (с) не помню.


Marser   (2005-05-20 18:46:00) [2]


> Можно третий вариант представить ввиде кода, а то я с
> Delphi недавно стал работать?

В [4] отличный код.


Просто Джо   (2005-05-20 18:45:00) [3]


> Просто Джо ©   (20.05.05 17:55) [4]
> Не получается выдаёт ошибку!


Я и не приводил полный рабочий код. Это всего лишь куски, которые тебе нужно добавитьк своему коду. Просто иллюстация примитивного счетчика.


Volume   (2005-05-20 18:24:00) [4]

Просто Джо ©   (20.05.05 17:55) [4]
Не получается выдаёт ошибку!

Marser ©   (20.05.05 17:40) [1]
Можно третий вариант представить ввиде кода, а то я с Delphi недавно стал работать?


Просто Джо   (2005-05-20 17:55:00) [5]

Если пишешь в свою папку, то разумнее всего использовать счетчик.

TForm = class...
...
private
...
 FFileCounter: Integer;
end;

///

procedure TForm1.Timer1Timer(Sender: TObject);
var
 FileName: string;
begin
 FileName := Format ('%d.bmp',[FFileCounter]);
 B.SaveToFile(Path+FileName);
 Inc(FFileCounter);
end;


если нет, тогда алгоритм грозит стать весьма запутанным. Проверка на существование см. [2] Virgo_Style ©   (20.05.05 17:49).

Мой совет: создавай свою временную папку.


Marser   (2005-05-20 17:50:00) [6]


> Virgo_Style ©   (20.05.05 17:49) [2] [Новое
>сообщение][Ответить]
> 4. Проверка FileExist'ом.

Забыл :о)


Virgo_Style   (2005-05-20 17:49:00) [7]

4. Проверка FileExist'ом.


Marser   (2005-05-20 17:40:00) [8]

1. findfirst, findnext, findclose. Находишь все bmp, выбираешь среди них файлы с цифровыми именами(проверяешь val, например), находишь наибольшее.

2. Внаглую пытаешься сохранить. Если выдаёт ошибку ERROR_ALREADY_EXISTS, присваиваешь имя+1.

3. Ведешь собственный счетчик имён.


Наверх

Титульная страница Поиск, карта сайта Написать письмо