Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 20:30   #1
DatonHhod
 
Регистрация: 12.05.2010
Сообщений: 6
По умолчанию столкнулся с проблемой наименования скриншота

Пишу программу: автоматический скриншотер...тоесть прог-ма которая делает снимки экрана и я столкнулся с проблемой: при запуске програмы, когда я делаю наименования скриншота (цивровое 1,2 и т.д.) всё работает и т.д..но когда заместо цифр я пишу (буквенное наименование) то у меня выдаёт ошибку "is not a valid integer value." в чём проблемма?

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Menus, jpeg;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
MainMenu1: TMainMenu;
BitBtn1: TBitBtn;
Image1: TImage;
Timer1: TTimer;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
Image2: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
Canvas:TCanvas;
ScreenV:HDC;
i: String;
begin
i:='1';

ScreenV := GetDC(0);
Canvas:=TCanvas.Create();
Canvas.Handle:=ScreenV;
Image1.Canvas.Copyrect(Rect(0,0,Ima ge1.Width,Image1.Height),
Canvas, Rect(0,0,Screen.Width,Screen.Height ));
ReleaseDC(0,ScreenV);
Canvas.Free;

Label3.Caption:=IntToStr(StrToInt(L abel3.Caption)+StrToINt(i));
Image1.Picture.SaveToFile(IntTOStr( StrToInt(Edit1.Text)+StrToInt(Label 3.Caption))+Edit2.Text);
end;

procedure TForm1.N2Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
Timer1.Enabled:=false;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
Form2.show;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
Form1.close;
end;
end.[/SIZE][/SIZE]
Изображения
Тип файла: bmp 213213.bmp (112.5 Кб, 148 просмотров)

Последний раз редактировалось DatonHhod; 10.06.2010 в 20:36.
DatonHhod вне форума Ответить с цитированием
Старый 10.06.2010, 20:36   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
Image1.Picture.SaveToFile(Edit1.Text+Label 3.Caption+Edit2.Text);
потому что у вас везде было преобразование к числу, вот ошибка и выскочила...даже текст ошибки не прочитали...

а зачем код два раза?

вообще если честно, в коде много глупостей.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.06.2010, 06:46   #3
DatonHhod
 
Регистрация: 12.05.2010
Сообщений: 6
Счастье

а как зделать чтоб и числа и буквы были? ну зачем 2 раза код и эти глупости сам незнаю... но учитель так мне накривил и какой будет правельный вариант кода?
DatonHhod вне форума Ответить с цитированием
Старый 12.06.2010, 12:32   #4
DatonHhod
 
Регистрация: 12.05.2010
Сообщений: 6
По умолчанию

так не кто и не подсказал
DatonHhod вне форума Ответить с цитированием
Старый 12.06.2010, 12:41   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

каждый раз при вызове сохранения файла скрина, задавайте ему имя, к примеру...
Код:
'суперскрин ' + formatdatetime('yyyy_mm_dd',date)+formatdatetime('_hh',time) +'.bmp';
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.06.2010, 14:14   #6
stck
Пользователь
 
Аватар для stck
 
Регистрация: 14.06.2010
Сообщений: 84
Сообщение

Цитата:
Сообщение от DatonHhod Посмотреть сообщение
так не кто и не подсказал
Image1.Picture.SaveToFile(Edit1.Tex t+Label3.Caption+Edit2.text);


Но вообще лучше перепиши процедуру BitBtn1Click
Сначала объяви глобально
bm: TBitMap;
Jp: TJpegImage;
fname:string;
Потом кинь SavePictureDialog и правь процедуру на эту:

begin
i:='1';
ShowCursor(false);
bm := TBitMap.Create;
bm.Width := Screen.Width;
bm.Height := Screen.Height;
BitBlt(bm.Canvas.Handle, 0, 0, bm.Width, bm.Height, GetDC(0), 0, 0, SRCCOPY);
Jp := TJpegImage.Create;
Jp.Assign(bm);
Jp.CompressionQuality :=100 ;
Jp.Compress;
ShowCursor(true);
Label3.Caption:=IntToStr(StrToInt(L abel3.Caption)+StrToINt(i));
fname:=((Edit1.Text+Label3.Caption) );
SavePictureDialog1.FileName := FName;
if SavePictureDialog1.Execute then
begin
FName := SavePictureDialog1.FileName;
Jp.SaveToFile(FName);
end;
bm.Destroy;
Jp.Destroy;
end;

Потом в параметрах SavePictureDialog фильтры укажи
JPEG Image File (*.jpeg)|*.jpeg
JPEG Image File (*.jpg)|*.jpg
Portable Network Graphics (*.png)|*.png
GIF Image (*.gif)|*.gif
и DefaultExt - jpg

Последний раз редактировалось stck; 14.06.2010 в 14:28.
stck вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меняются наименования xxxxx0111 Microsoft Office Excel 3 17.02.2010 22:36
столкнулся впервые с простым вопросом sava28 HTML и CSS 0 25.11.2008 22:50
Столкнулся с проблемой. Нужна помощь Whisper Помощь студентам 2 24.08.2007 13:16
Как просуммировать одинаковые наименования? Алька Microsoft Office Excel 1 23.05.2007 22:02