[Delphi] filemask

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • albatrosX1
  • Registratie: Juni 2005
  • Laatst online: 15-09 11:50
Hallo Goters!

Ben sinds een week bezig met een kleine progje met delphi. De bedoeling hiervan is dat ik een lijst krijg met alle bestanden in een bepaalde directory op mijn ftp server. Zover is het ook gelukt.
Neem even kijkje...
Afbeeldingslocatie: http://www.tomaatnet.nl/~masud/1.jpg
Zo ziet het uit. Ik maak gebruik van Indy9.
Het veld wat je ziet, is een 'FileListBox'.
Afbeeldingslocatie: http://www.tomaatnet.nl/~masud/2.jpg
Ik klik op connect en krijg alle bestanden te zien in de 'FileListBox'. Behalve de bestandsnaam zie ik ook de grootte en andere ftp waardes.
Afbeeldingslocatie: http://www.tomaatnet.nl/~masud/3.jpg
Ik selecteer een bestand uit de lijst, en klik op download. Vervolgens krijg ik een foutmelding zoals je ziet.
Het bestand kan niet gedownload worden omdat mijn progje probeert om een bestand te zoeken met een naam die in de lijst staat, dus behalve de bestandsnaam ook all die andere waardes.

Dus mijn vraag is, hoe ga ik dat filteren, dat ik alleen maar de bestandsnaam zie, en niet all die andere waardes.

Voordat jullie gaan zeggen dat ik op Google eerst moet zoeken, ik heb helemaal niet zo veel verstand van programmeren. Ik heb dit progje dan ook dankzij Google zover kunnen bouwen. Alleen voor deze probleem weet ik niet eens waar ik moet zoeken en hoe. Als iemand mij hiermee kan helpen :'(

Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Ik heb helaas geen indy 9, maar wel een workarround: Als het goed is staat er in de hele tekenreeks maar 1 keer een :, en staat die op een vaste afstand van de bestandsnaam zelf. Dus als je de tekenreeks vanaf de positie positie+4 tot aan het einde kopieert heb je de bestandsnaam:
code:
1
bestandsnaam:=copy(tekst, pos(':', tekst)+4, length(tekst)-pos(':', tekst)-3);

Uiteraard 'tekst' vervangen door de invoer.

Acties:
  • 0 Henk 'm!

  • albatrosX1
  • Registratie: Juni 2005
  • Laatst online: 15-09 11:50
dcm360 schreef op dinsdag 13 januari 2009 @ 23:01:
Ik heb helaas geen indy 9, maar wel een workarround: Als het goed is staat er in de hele tekenreeks maar 1 keer een :, en staat die op een vaste afstand van de bestandsnaam zelf. Dus als je de tekenreeks vanaf de positie positie+4 tot aan het einde kopieert heb je de bestandsnaam:
code:
1
bestandsnaam:=copy(tekst, pos(':', tekst)+4, length(tekst)-pos(':', tekst)-3);

Uiteraard 'tekst' vervangen door de invoer.
Heey, bedankt voor je snelle reactie!
Maar ik begrijp je niet helemaal. Ik zie namelijk in de code nergens dat staan. Ik maak gebruik van een hele simpele code om het bestand te downloaden.

ftp.get(filelistbox1.Items.Text, 'c:\test.txt', True);
zo dus...

ps. hoe doen jullie die codes zo mooi hier plaatsen? :P

Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

albatrosX1 schreef op dinsdag 13 januari 2009 @ 23:11:
[...]


Heey, bedankt voor je snelle reactie!
Maar ik begrijp je niet helemaal. Ik zie namelijk in de code nergens dat staan. Ik maak gebruik van een hele simpele code om het bestand te downloaden.

ftp.get(filelistbox1.Items.Text, 'c:\test.txt', True);
zo dus...

ps. hoe doen jullie die codes zo mooi hier plaatsen? :P
klik op dit Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/view.gif icoontje zie je precies hoe we dat doen
[code]woei[/]
code:
1
woei


met ftp kun je een dir of een ls (nou twijfel ik of ls alleen voorbestems is voor telnet) doen, jouw lijst is het resultaat van een dir daar krijg je eenmaal die extra shit bij. en daar moet je wat omheen programmeren

maak maar zelf maar een een ftp sessie open .. (met het handje) dus cmd, ftp tomaatnet

[ Voor 11% gewijzigd door Fish op 13-01-2009 23:27 ]

Iperf


Acties:
  • 0 Henk 'm!

  • albatrosX1
  • Registratie: Juni 2005
  • Laatst online: 15-09 11:50
thx...
maar ik moet het zo hebben dat ik het bestand uit een lijst kan kiezen, dus niet handmatig. Had zelf verwacht dat die Filelistbox een filter optie had, maar was ook niet zo...

[ Voor 190% gewijzigd door albatrosX1 op 13-01-2009 23:34 ]


Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Of heb je het gewoon niet gevonden ? (ben geen indy gebruiker)

Als je het echt niet weet ram je die formule over de hele filelistbox en duw je dat in een gewone listbox

[ Voor 46% gewijzigd door Fish op 13-01-2009 23:42 ]

Iperf


Acties:
  • 0 Henk 'm!

  • albatrosX1
  • Registratie: Juni 2005
  • Laatst online: 15-09 11:50
fish schreef op dinsdag 13 januari 2009 @ 23:38:
Of heb je het gewoon niet gevonden ? (ben geen indy gebruiker)

Als je het echt niet weet ram je die formule over de hele filelistbox en duw je dat in een gewone listbox
alleen de ftp component is van indy.

maar ik vraag me af of er geen andere manier is om alleen de bestanden van een bepaalde dir te zien...
bv dat er een 'savefile' venstertje opent waar je het bestand kan kiezen of zo...geen idee...help :|

Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

wat let je om die 2 te combineren ?

bestandsnaam:=copy(tekst, pos(':', tekst)+4, length(tekst)-pos(':', tekst)-3);
ftp.get(filelistbox1.Items.Text, 'c:\test.txt', True);

ftp.get(copy(tekst, pos(':', tekst)+4, length(tekst)-pos(':', tekst)-3), 'c:\test.txt', True);


Disclaimer ik heb 0,0 code gechecked

Iperf


Acties:
  • 0 Henk 'm!

  • albatrosX1
  • Registratie: Juni 2005
  • Laatst online: 15-09 11:50
fish schreef op dinsdag 13 januari 2009 @ 23:57:
wat let je om die 2 te combineren ?

bestandsnaam:=copy(tekst, pos(':', tekst)+4, length(tekst)-pos(':', tekst)-3);
ftp.get(filelistbox1.Items.Text, 'c:\test.txt', True);

ftp.get(copy(tekst, pos(':', tekst)+4, length(tekst)-pos(':', tekst)-3), 'c:\test.txt', True);


Disclaimer ik heb 0,0 code gechecked
ja dat heb ik als eerste geprobeerd, maar lukt helaas ook niet.
Ik ga eens zoeken naar een andere manier om de bestanden weer te geven ipv filelistbox

Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Een TFileListBox is bedoelt om 'automatisch' bestanden van de lokale machine weer te geven. Niet willekeurige tekst, wat jij er in stopt. Een TListBox of TListView zou beter passen. Maar jou probleem is niet het weergeven, maar dat je niet alleen de bestandsnaam teruggekregen hebt, maar ook extra informatie. Als je Indy niet zover krijgt dat je alleen de bestandsnaam terug krijgt zal je die zelf uit de string moeten vissen met Copy en Pos bijvoorbeeld. Je probleem is dus niet de weergave. Ik weet bijna zeker dat Indy met een FTP client voorbeeld komt, dus ik zou zeggen: Bekijk de Demo's van Indy eens.

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

  • lordsnow
  • Registratie: Maart 2000
  • Laatst online: 01:31

lordsnow

I know nothing

1. Ga 's string-parsen
2. Delphi (Indy) had/heeft idd een FTP demo.

Acties:
  • 0 Henk 'm!

Verwijderd

Zie onderstaand voorbeeld toont alleen de items niet de details.

IdFTP1.Username := 'Anonymous';
IdFTP1.Host := '<< een ftp host ;) >>';
IdFTP1.Connect();
IdFTP1.ChangeDir('/');
IdFTP1.List(ListBox1.Items, '', false); // Door de false mee te geven worden de details niet getoond ;)
Pagina: 1