Avatar billede d34c0n Praktikant
13. oktober 2002 - 02:48 Der er 19 kommentarer og
1 løsning

Filens størrelse...

Hej!
Jeg er i gang med noget FTP...
og så skal jeg have gjort sådan at man kun kan uploade 1 megabyte ad gangen (10000 bytes) ...

her er kode til at uploade:

procedure TMainForm.UploadButtonClick(Sender: TObject);

begin
  if IdFTP1.Connected then begin


  if UploadOpenDialog1.Execute then  try

  SetFunctionButtons(false);

  IdFTP1.TransferType := ftBinary;


  IdFTP1.Put(UploadOpenDialog1.FileName, ExtractFileName(UploadOpenDialog1.FileName));
  ChageDir(idftp1.RetrieveCurrentDir);
  finally
  SetFunctionButtons(true);

  end;
  end;
  end;

--------

så ville jeg egentlig have den til at disconnecte hvis brugeren prøver at uploade en fil på mere end 1 MB. hvordan kan det gøres?

help me.
Avatar billede borrisholt Novice
13. oktober 2002 - 10:00 #1
function GetFileSize(const FileName : TFileName) : Integer;
var
  SearchRec : TSearchRec;
begin
  Result := 0;
  if not FileExists(FileName) then
    exit;
  FindFirst(FileName, faAnyFile, SearchRec);
  Result := SearchRec.Size;
  FindClose(SearchRec);
end;

Jens B
Avatar billede d34c0n Praktikant
13. oktober 2002 - 11:15 #2
hvordan bruger jeg den i mit tilfælde?
Avatar billede dkn Nybegynder
13. oktober 2002 - 11:28 #3
Kan du ikke gøre noget alle det her:

procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
if AWorkMode = wmWrite then
    if AWorkCount > 10000 then
      IdFTP1.Disconnect;
end;
Avatar billede borrisholt Novice
13. oktober 2002 - 11:38 #4
joeee. men er det ikke nemmere at lade være med at koble op hvis filen er for stor
Avatar billede dkn Nybegynder
13. oktober 2002 - 11:46 #5
Jeg tror han har tænkt sig at lave en demo version til sit ftp prog.
Og jeg kunne ikke forestille mig noget mere irriterende end en fil som stoppede med at uploade halvvejs.
Avatar billede borrisholt Novice
13. oktober 2002 - 12:52 #6
jo jo netop :

if GetFileSize(Filename) > 1e6 then //ca 1 mb
  exit:
idFTP1.connect ...

:-)

Jens B
Avatar billede borrisholt Novice
13. oktober 2002 - 13:50 #7
her er en lidt simplere udgave :

function FileSize(FileName : String) : Integer;
var
  SearchRec : TSearchRec;
begin
  FindFirst(FileName, faAnyFile, SearchRec);
  FindClose(SearchRec);
  Result := SearchRec.Size;
end;


Jens B
Avatar billede d34c0n Praktikant
13. oktober 2002 - 15:03 #8
borristholt> vil du ikke sætte den koden sammen med min, jeg ved ikke hvordan jeg skal bruge den!?
Avatar billede borrisholt Novice
13. oktober 2002 - 15:08 #9
procedure TMainForm.UploadButtonClick(Sender: TObject);
var
  FileName : TFileName;
begin
  if not UploadOpenDialog1.Execute then 
    exit;

FileName := UploadOpenDialog1.Filename;

if GetFileSize(Filename) > 1e6 then //ca 1 mb
  exit:

if IdFTP1.Connected then
begin
  try
    SetFunctionButtons(false);
    IdFTP1.TransferType := ftBinary;
    IdFTP1.Put(FileName, ExtractFileName(FileName));
    ChageDir(idftp1.RetrieveCurrentDir);
  finally
    SetFunctionButtons(true);
  end;
end;
end;

Jens B
Avatar billede d34c0n Praktikant
13. oktober 2002 - 18:11 #10
[Error] mainf.pas(192): Incompatible types: 'Cardinal' and 'TFileName'
[Error] mainf.pas(208): '.' expected but ';' found
Avatar billede d34c0n Praktikant
13. oktober 2002 - 18:14 #11
okay, jeg rettede lige den sidste fejl.
det var bare en stavefejl du havde lavet!
Avatar billede dkn Nybegynder
13. oktober 2002 - 18:15 #12
if GetFileSize(Filename) > 1e6 then //ca 1 mb
  exit;////
Avatar billede d34c0n Praktikant
14. oktober 2002 - 19:11 #13
BORRISHOLT> jeg accepterer ikke før jeg har fået et svar der virker!!!
Avatar billede borrisholt Novice
14. oktober 2002 - 19:14 #14
function GetFileSize(FileName : String) : Integer;
var
  SearchRec : TSearchRec;
begin
  FindFirst(FileName, faAnyFile, SearchRec);
  FindClose(SearchRec);
  Result := SearchRec.Size;
end;

procedure TMainForm.UploadButtonClick(Sender: TObject);
var
  FileName : TFileName;
begin
  if not UploadOpenDialog1.Execute then 
    exit;

FileName := UploadOpenDialog1.Filename;

if GetFileSize(Filename) > 1e6 then //ca 1 mb
  exit:

if IdFTP1.Connected then
begin
  try
    SetFunctionButtons(false);
    IdFTP1.TransferType := ftBinary;
    IdFTP1.Put(FileName, ExtractFileName(FileName));
    ChageDir(idftp1.RetrieveCurrentDir);
  finally
    SetFunctionButtons(true);
  end;
end;
end;

Husk at rette etv stave fejl !
Avatar billede d34c0n Praktikant
15. oktober 2002 - 00:05 #15
[Error] mainf.pas(187): Undeclared identifier: 'UploadOpenDialog1'
[Error] mainf.pas(187): 'THEN' expected but identifier 'Execute' found
[Error] mainf.pas(193): ':=' expected but ':' found
[Error] mainf.pas(195): Operator not applicable to this operand type
[Error] mainf.pas(198): Undeclared identifier: 'SetFunctionButtons'
[Error] mainf.pas(199): Missing operator or semicolon
[Error] mainf.pas(200): Missing operator or semicolon
[Error] mainf.pas(201): Undeclared identifier: 'ChageDir'
[Error] mainf.pas(201): Missing operator or semicolon
[Error] mainf.pas(201): EXCEPT or FINALLY expected
[Error] mainf.pas(205): '.' expected but ';' found
[Warning] mainf.pas(206): Text after final 'END.' - ignored by compiler
[Error] mainf.pas(69): Unsatisfied forward or external declaration: 'TMainForm.UploadButtonClick'
[Error] mainf.pas(70): Unsatisfied forward or external declaration: 'TMainForm.DirectoryListBoxDblClick'
[Error] mainf.pas(71): Unsatisfied forward or external declaration: 'TMainForm.DeleteButtonClick'
[Error] mainf.pas(72): Unsatisfied forward or external declaration: 'TMainForm.IdFTP1Disconnected'
[Error] mainf.pas(73): Unsatisfied forward or external declaration: 'TMainForm.AbortButtonClick'
[Error] mainf.pas(74): Unsatisfied forward or external declaration: 'TMainForm.BackButtonClick'
[Error] mainf.pas(75): Unsatisfied forward or external declaration: 'TMainForm.IdFTP1Status'
[Error] mainf.pas(77): Unsatisfied forward or external declaration: 'TMainForm.TraceCheckBoxClick'
[Error] mainf.pas(78): Unsatisfied forward or external declaration: 'TMainForm.FormCreate'
[Error] mainf.pas(79): Unsatisfied forward or external declaration: 'TMainForm.DirectoryListBoxClick'
[Error] mainf.pas(80): Unsatisfied forward or external declaration: 'TMainForm.IdFTP1Work'
[Error] mainf.pas(82): Unsatisfied forward or external declaration: 'TMainForm.IdFTP1WorkBegin'
[Error] mainf.pas(84): Unsatisfied forward or external declaration: 'TMainForm.IdFTP1WorkEnd'
[Error] mainf.pas(85): Unsatisfied forward or external declaration: 'TMainForm.UsePassiveClick'
[Error] mainf.pas(86): Unsatisfied forward or external declaration: 'TMainForm.ChDirButtonClick'
[Error] mainf.pas(87): Unsatisfied forward or external declaration: 'TMainForm.CreateDirButtonClick'
[Hint] mainf.pas(90): Private symbol 'AbortTransfer' declared but never used
[Hint] mainf.pas(92): Private symbol 'BytesToTransfer' declared but never used
[Hint] mainf.pas(93): Private symbol 'STime' declared but never used
[Error] mainf.pas(94): Unsatisfied forward or external declaration: 'TMainForm.ChageDir'
[Error] mainf.pas(96): Unsatisfied forward or external declaration: 'TMainForm.SaveFTPHostInfo'
[Hint] mainf.pas(97): Private symbol 'GetHostInfo' declared but never used
[Fatal Error] s7aticftp.dpr(19): Could not compile used unit 'mainf.pas'

Jeg ved ikke om du synes det er mange fejl?
Avatar billede dkn Nybegynder
15. oktober 2002 - 00:26 #16
borrisholt -> God fornøjelse hehe :)
Avatar billede borrisholt Novice
15. oktober 2002 - 12:15 #17
dkn >> Du er sq nok selv nød til selv at tænke lidt ....

UploadOpenDialog1 .. Var noget du selv bragte på banen
ChageDir .. Er din gene stave fejl .. ret den selv !!!

etc etc .... Jeg ved ikke hovr du vil hen, eller jo det ved jeg godt !

Jeg stopper her !!!

Jens B
Avatar billede dkn Nybegynder
15. oktober 2002 - 14:38 #18
Borrisholt -> Det var skam ikke mig der stillede spørgsmålet her !
Avatar billede borrisholt Novice
16. oktober 2002 - 08:23 #19
d34c0n>> Er du pade stiv ?

Jens B
Avatar billede d34c0n Praktikant
22. oktober 2002 - 12:47 #20
måske.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester