Avatar billede rekun Nybegynder
11. maj 2007 - 13:24 Der er 17 kommentarer og
1 løsning

FTP - Kun filnavn

Hvordan får man en listbox til at vise indholdet af en FTP mappe
jeg bruger denne kode:
idFTP1.list (Filelistbox1.items.Create);
men det giver noget i retning af:
-rw-r--r--  1 70835 70835      110 May  11  13:22 test.txt
hvordan får jeg den til bare at skriv test.txt?
Avatar billede robertmp Nybegynder
11. maj 2007 - 14:00 #1
Er ikke helt sikker på hvad det du søger, men forstår det som en string parsing.

En simpel løsning (nem at følge)

var str:string;
    index:integer;
    lastSpace:Integer;

Først finder vi sidste space i din string
  str := '-rw-r--r--  1 70835 70835      110 May  11  13:22 test.txt';
  LastSpace := -1;
  for index := 1 to length(str) do
    if str[index] = ' ' then
      LastSpace := index;

Så hiver vi det ud vi skal bruge. Fra sidste space og resten af strengen.

  if lastSpace <> -1 then
  begin
    showmessage( copy(str, lastspace, maxint) );
  end;
Avatar billede rekun Nybegynder
11. maj 2007 - 14:13 #2
skal nok have lidt mere hjælp

kan jeg bruge: idftp1.list (str); istedet for  str := '-rw-r--r--  1 70835 70835      110 May  11  13:22 test.txt';

og hvordan får jeg det så ind i en listbox ( vil tro det er noget med listbox1.items.add eller listbox1.items.create )

håber du lige vil give den sidste hjælp
Avatar billede robertmp Nybegynder
11. maj 2007 - 14:27 #3
Du er helt på sporet med listboxen.
listbox1.items.add(din_string);
Eller som mit eksempel:
listbox1.items.add(  copy(str, lastspace, maxint)  );

Jeg sidder desværre med en gammel Delphi V5 og har ikke det IdFTP komponent du bruger, så jeg kan ikke se hvad idftp1.list egentlig gør
Avatar billede rekun Nybegynder
11. maj 2007 - 15:24 #4
den lister alle filerne som er i ftp mappen, men problemet er at istedet for at skrive test.txt får man -rw-r--r--  1 70835 70835      110 May  11  13:22 test.txt
Avatar billede rekun Nybegynder
11. maj 2007 - 15:24 #5
prøver det lige
Avatar billede rekun Nybegynder
11. maj 2007 - 15:32 #6
ja tror det virker, men problemet er at jeg ikke ved hvordan jeg får indholdet fra idftp1.list ind i stringen "str", får fejlen [DCC Error] Unit7.pas(51): E2010 Incompatible types: 'string' and 'procedure, untyped pointer or untyped parameter'
Avatar billede hrc Mester
11. maj 2007 - 23:48 #7
Jeg har skrevet om det før - med ligeså meget konkret lærdom ... Jeg er næsten 100% sikker på der findes en funktion i ftp-komponenten der kun lister filerne.

Skulle der ikke gøre det må du læse filerne ind i en stringlist (vha. assign) og dernæst slette tegnene 1..50

MyList.Assign(IdFTP.List)

for i := 0 to MyList.Count - 1 do
  MyList[i] := copy(MyList[i],50,MaxInt);

derefter har du dine filer - men som nævnt. Jeg er meget sikker på funktionen, du leder efter, er lavet og bare skal findes.
Avatar billede hrc Mester
12. maj 2007 - 00:26 #8
Den hedder vist: DirectoryListing og er nedarvet fra en TCollectionList. Dens anden halvdel er TIdFSPListItem (nedarver så fra TCollectionItem) og indeholder bl.a. en property der hedder "Filename". Mon ikke det er den du skal bruge?
Avatar billede rekun Nybegynder
12. maj 2007 - 14:06 #9
du er da tidligt oppe :D prøver det lige
Avatar billede rekun Nybegynder
12. maj 2007 - 14:18 #10
du er nød til at forklare det sidste lidt nærmere ( måske komme med et eksempel )
Avatar billede rekun Nybegynder
13. maj 2007 - 10:06 #11
ved MyList.Assign(IdFTP1.List); for jeg denne fejl [DCC Error] Unit7.pas(51): E2010 Incompatible types: 'TPersistent' and 'procedure, untyped pointer or untyped parameter'
Avatar billede hrc Mester
13. maj 2007 - 23:07 #12
Du kan sikkert bruge DirectoryListing sådan som jeg påstod - den er i alt fald bedre end list hvis du skal have nogle af detaljerne med på en ordnet måde, men Chads egen FAQ benytter selv List. Proceduren har en optionel parameter som styrer om det skal være detaljeret eller ej.

Gætter på følgende vil fungere:

var
  Files : TStringList;
begin
  Files := TStringList.Create;
  try
    IdFTP.List(Files,'*.*',false);
  finally
    Files.Free;
  end;
end;

Jeg har fundet følgende link, men der er sikkert også en PDF på Indy-hjemmesiden: http://www.mm.fh-mannheim.de/entwicklung/delphi/IndyFAQ.pdf
Avatar billede rekun Nybegynder
14. maj 2007 - 09:26 #13
Jeg lukker nu :D, du får de point som du såsandelig har fortjent.
Avatar billede fundus Nybegynder
15. juni 2007 - 12:04 #14
Hvad er BoundIP har den meller fejl hele tiden.. ?
Avatar billede rekun Nybegynder
15. juni 2007 - 12:23 #15
Velkommen til eksperten.dk men først skal vi slå et par ting fast. Denne tråd er en måned gammel, der er ingen grund til at genoplive gamle tråde. Hvis du vil have svar på noget så skal du ( fremover ) oprette dit eget sprøgsmål ( gøres i bjælken foroven )

1.  koden som hrc giver virker perfekt

2.  Der er ikke noget BoundIP i denne kode.

3.  Men siden du er ny her, kan jeg da godt prøve at hjælpe dig. Kan du give en forklaring på hvor fejlen kommer? er svært at svarer helt præcist med så få oplysninger. Det lyder til at din IdFTP ikke ved hvad den skal forbinde til. Prøv denne kode istedet...

var
  Files : TStringList;
begin
idFTP1.Host := 'din Host';
idFTP1.Username := 'Dit brugernavn';
idFTP1.Password := 'Dit password';
try
idFTP1.Connect();
      except
        on E:Exception do
          showmessage ('Der kunne ikke forbindes til serveren')  ;
          end;
  Files := TStringList.Create;
  try
    IdFTP.List(Files,'*.*',false);
  finally
    Files.Free;

erstat host, brugernavn og password med det du har fået af din FTP udbyder



:D
Avatar billede fundus Nybegynder
15. juni 2007 - 12:29 #16
menge tag.. Skal jeg nok :D

Men den laver fejl ved denne code... (IdFTP.List(Files,'*.*',false);) :S hvad kan det være ?
Avatar billede rekun Nybegynder
15. juni 2007 - 12:59 #17
som jeg også skrev ovenfor, så tror jeg det er fordi den ikke er forbundet til serveren.

erstat din gamle kode med denne

var
  Files : TStringList;
begin
idFTP1.Host := 'din Host';
idFTP1.Username := 'Dit brugernavn';
idFTP1.Password := 'Dit password';
try
idFTP1.Connect();
      except
        on E:Exception do
          showmessage ('Der kunne ikke forbindes til serveren')  ;
          end;
  Files := TStringList.Create;
  try
    IdFTP.List(Files,'*.*',false);
  finally
    Files.Free;

erstat så host, brugernavn og password med det du har fået af din FTP udbyder ( eks. frac.dk, 1go.dk eller hotserv.dk )
Avatar billede fundus Nybegynder
15. juni 2007 - 13:04 #18
okay tak :D
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