Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Отправка файла с определённым размером


Автор: dark73 23.1.2006, 21:29
Как сделать так, что бы файл набравши вес 3кб, сразу же отправлялся на ФТП ? (прогу надо без формы) (отправку на ФТп я уже реализовал)

Автор: MIX55 23.1.2006, 21:54
Определяешь размер файла так:
Код

function GetFileSize(namefile: string): Integer;
var
  InfoFile: TSearchRec;
  AttrFile: Integer;
  ErrorReturn: Integer;
begin
  AttrFile := $0000003F; {Any file}
  ErrorReturn := FindFirst(namefile, AttrFile, InfoFile);
  if ErrorReturn <> 0 then
    Result := -1 
  else
    Result := InfoFile.Size; 
  FindClose(InfoFile);
end;


проверяешь условие
Код

i:=GetFilesize('Primer.txt');

if i=3000 then отправляем на ФТП;




Автор: Snowy 24.1.2006, 10:29
Или просто использовать FileSize из SysUtils.
Кроме того немаловажно, каким именно образом этот файл набирает размер.

Автор: dark73 26.1.2006, 20:59


Хочу попробывать с формой, но не выходит.

Код

procedure TForm1.FormCreate(Sender: TObject);
function GetFileSize(namefile: string): Integer;
var
  InfoFile: TSearchRec;
  AttrFile: Integer;
  ErrorReturn: Integer;
begin
  AttrFile := $0000003F; {Any file}
  ErrorReturn := FindFirst(namefile, AttrFile, InfoFile);
  if ErrorReturn <> 0 then
    Result := -1 
  else
    Result := InfoFile.Size; 
  FindClose(InfoFile);
end;
i:=GetFilesize('c:\mydir\primer.txt');
if i=3000 then отправляем на ФТП;
end;
end.


какие мои ошибки?

Автор: bems 26.1.2006, 21:09
попробуй так:
Код

function GetFileSize(namefile: string): Integer;
var
  InfoFile: TSearchRec;
  AttrFile: Integer;
  ErrorReturn: Integer;
begin
  AttrFile := $0000003F; {Any file}
  ErrorReturn := FindFirst(namefile, AttrFile, InfoFile);
  if ErrorReturn <> 0 then
    Result := -1 
  else
    Result := InfoFile.Size; 
  FindClose(InfoFile);
end;


procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
i:=GetFilesize('c:\mydir\primer.txt');
if i=3000 then отправляем на ФТП;
end;

Автор: ne0n 26.1.2006, 21:19
Функцию разместил
Переменная i у тебя не где не обьявленна!
Приблизительно должно быть так:
Код

function GetFileSize(namefile: string): Integer;
var
  InfoFile: TSearchRec;
  AttrFile: Integer;
  ErrorReturn: Integer;
begin
  AttrFile := $0000003F; {Any file}
  ErrorReturn := FindFirst(namefile, AttrFile, InfoFile);
  if ErrorReturn <> 0 then
    Result := -1 
  else
    Result := InfoFile.Size; 
  FindClose(InfoFile);
end;
...
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;{помоему integer}
begin
i:=GetFilesize('c:\mydir\primer.txt');
if i=3000 then ....
end;


Цитата(dark73 @ 26.1.2006, 20:59 Найти цитируемый пост)

if i=3000 then отправляем на ФТП;

Делфи по-русски не понимаетsmile

p.s. Компьютерное воровство приравнивается к реальному!!!

Автор: dark73 26.1.2006, 21:39
Странно, всё равно не работает smile


Я попробывал заменить отправку на Фтп другой ф-цией, ибо вдруг отправка может и не работает.


Вот полный код проги

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function GetFileSize(namefile: string): Integer;
var
  InfoFile: TSearchRec;
  AttrFile: Integer;
  ErrorReturn: Integer;
begin
  AttrFile := $0000003F; {Any file}
  ErrorReturn := FindFirst(namefile, AttrFile, InfoFile);
  if ErrorReturn <> 0 then
    Result := -1 
  else
    Result := InfoFile.Size; 
  FindClose(InfoFile);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
i:=GetFilesize('c:\mydir\primer.txt');
if i=3000 then CopyFile('C:\1.txt', 'C:\mydir\2.txt, false);
 end;

end.


Думаю ошибка у меня где-то в коде, хотя Хз.
не пойму =(

Автор: MAXakaWIZARD 26.1.2006, 22:28
А что это за отправка на фтп простым копированием? Имеется в виду, что папка mydir расшарена на фтп?
Добавлено @ 22:29
Да и кстати. 3 Кб это не 3000 байт, а 3072 байт. smile
Добавлено @ 22:31
Да, у тебя ошибка в коде, в
Цитата(MAXakaWIZARD @ 26.1.2006, 22:28 Найти цитируемый пост)

CopyFile('C:\1.txt', 'C:\mydir\2.txt, false);

после 2.txt поставь кавычку. smile
Впредь повнимательнее надо.
Добавлено @ 22:38
Ладно, чувак. Что-то ты молчишь. Мне пора домой (я на работе), время-то уже позднее. Если что, то пиши мне на мыло: max-aka-wizard@rambler.ru. Всегда буду рад помочь. Но у меня дома пока инета нет, поэтому у меня нет возможности каждый день проверять почту. Так что если что, то жди пару дней.
Добавлено @ 22:39
Счастливо! smile

Автор: dark73 26.1.2006, 22:42
Я хочу, что бы файл C:\primer.txt после того как наберёт размер 3Кб автоматически отсылался бы мне на ФТП, но потом я понял, что ФТП не пойдёт и простым копирование решил проверить работу всей проги, НЕ ПАШЕТ =((


Теперь хочу попробывать что бы файл после набирания 3кб файл отправлялся на myemail@mai.ru, но вот не знаю как это всё реализовать smile
Ни какой инфы ни где нет =(

Автор: dark73 27.1.2006, 00:08
помгите, реализовать кто может, а то оч срочно надо, а в дельфях я очень слаб

Автор: Guedda 27.1.2006, 11:28
Послать на мыло, это в раздел: "Delphi - Сети"...

А ты уверен, что при набирании размер файла не перескакивает через отметку 3 Кб, а, допустим, 2999 байт, 3466 байт... Может, лучше сделать так:
Код

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
function GetFileSize(namefile: string): Integer;
var
  InfoFile: TSearchRec;
  AttrFile: Integer;
  ErrorReturn: Integer;
begin
  AttrFile := $0000003F; {Any file}
  ErrorReturn := FindFirst(namefile, AttrFile, InfoFile);
  if ErrorReturn <> 0 then
    Result := -1 
  else
    Result := InfoFile.Size; 
  FindClose(InfoFile);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
i:=GetFilesize('c:\mydir\primer.txt');
if i >= 3072 then CopyFile('C:\1.txt', 'C:\mydir\2.txt, false);
 end;
end.

Автор: dark73 27.1.2006, 15:23
Опять ошибки =(
Build
[Error] Unit1.pas(47): Unterminated string
[Error] Unit1.pas(48): Not enough actual parameters
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Автор: bems 27.1.2006, 16:36
Цитата(dark73 @ 27.1.2006, 15:23 Найти цитируемый пост)

[Error] Unit1.pas(47): Unterminated string
-кавычку закрой

Автор: Guedda 27.1.2006, 17:41
Цитата

[Error] Unit1.pas(48): Not enough actual parameters


В функции некоторые параметры не дописал

Автор: dark73 27.1.2006, 18:22
Всё отлично работает =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)