Вниз
Скачать: CL | DM;

Автопереименование   Найти похожие ветки 

← →
Volume ©   (2005-05-20 17:32) [0]

Как сделать, чтобы при обнаружении файла с именем 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;


← →
Marser ©   (2005-05-20 17:40) [1]

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

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

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


← →
Virgo_Style ©   (2005-05-20 17:49) [2]

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


← →
Marser ©   (2005-05-20 17:50) [3]


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

Забыл :о)


← →
Просто Джо ©   (2005-05-20 17:55) [4]

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

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).

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


← →
Volume ©   (2005-05-20 18:24) [5]

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

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


← →
Просто Джо ©   (2005-05-20 18:45) [6]


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


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


← →
Marser ©   (2005-05-20 18:46) [7]


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

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


← →
Virgo_Style ©   (2005-05-20 19:24) [8]

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



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
3-1114691689
zdn
2005-04-28 16:34
2005.06.06
TClientDataSet


14-1116330006
pasha_golub
2005-05-17 15:40
2005.06.06
BCC32 --> Delphi


14-1116587533
Lexer
2005-05-20 15:12
2005.06.06
Как прочесть xml?


4-1113393264
Dmitry
2005-04-13 15:54
2005.06.06
Shell: при замене explorer система "висит" на приветствии 45 сек


4-1113647803
HDD
2005-04-16 14:36
2005.06.06
Можно ли из Delphi напрямую обратиться к жесткому диску




   Наверх