[Delphi] Edycja pliku bedacego na serwerze FTP

0

Witam, jestem poczatkujacy w Delphi i chcialbym zrobic program ktory bedzie mial za zadanie edytowac plik ktory jest na FTP. Host, login i haslo mialoby byc wbudowane w programie tzn. ja wpisuje je przy tworzeniu wiec ten kto uzywa tego programu nie bedzie musial go wpisywac, potem uzytkownik mialby wpisywac nazwe pliku do edytowania np. nazwa.ini i po kliknieciu OK program edytowalby np. Lvl wpisany w pliku na jakis ktory ja wpisze przy tworzeniu programu... i oczywiscie to gdzie ten plik ma sie znajdowac tez bym wolal wpisac przy tworzeniu programu ale wlasnie nie wiem jakby sie za to zabrac i jak to zrobic w ogóle [glowa] [glowa] daje "pomogl" [soczek] jak ktos pomoze w tym, mile widziane artykuly i gotowce pomagajace w robieniu tego programu :)

@Edit
juz wiem ze mi sie przyda ten temat Pliki INI
ale jeszcze jak zrobic zeby edytowac plik ini ktory jest na jakims serwerze FTP ? :F
Ps. przeszukalem cale forum i nic nie znalazlem ;/

0

Możesz spróbować tak, że daj button z napisem "Edytuj" i po jego klinięciu plik pobiera się na dysk użytkownika, tam user go edytuje i ponownie wysyła na serwer.

0

a jak zrobic zeby wysylalo z powrotem na serwer i nadpisywalo go ? :F

0

musisz napisac klienta ftp
program ktory laczy sie z danym kontem ftp po wczytaniu plikow czy nazw (jak chcesz) pobiera plik na dysk dokonujesz zmiany czyli piszesz co chcesz w tym pliku i wysylasz ten plik na serwer

0

i do tego clienta bym dodal ze po nacisnieciu buttonu sam zmienia np. ten lvl w pliku .ini i Od razu wysyla na serwa :-) tylko jeszcze musze poszukac jak napisac takiego clienta :-) jak bede mial jeszcze jakies pytania to tu napisze

0

Najprościej chyba będzie motodą Put;]</b>

P.S. Tu masz opis klienta http://4programmers.net/Delphi/Artykuły/INDY#id-Klient-FTP;]

0

no ja znalazlem INDY i nie rozumiem 1 :) gdzie mam wsadzic

IdFTP1.Port := '21';
IdFTP1.Username := 'anonymous';
IdFTP1.Password := 'haslo';
IdFTP1.Host := '127.0.0.1';

?

0

Np. do buttona "Połącz":] Ale skoro ty masz mieć to zrobione na stałe, to powstawiaj to we właściwości komponentu IdFTP1:] Tylko tak:
Port: 21
Username: (zależy od serwera) np. na YoYo będzie ty.yoyo.pl
Password: wiadomo, hasło do serwera
Host: ty.yoyo.pl

0

to powstawiaj to we właściwości komponentu IdFTP1

a podalbys linka do tego komponentu zeby zainstalowac ? bo nie znalazlem go u siebie, moze przeoczylem ale watpie :P

0

A masz zainstalowany pakiet INDY? Jak tak, to w Delphi z menu "View" wybierz "Component List" i wpisz "tidftp" i jak Ci go znajdzie to kliknij "Add to Form".

0

no mam te "Component List" i wpisuje te "tidftp" ale nie znajduje tego.. cos jeszcze musze zainstalowac ? :>

0

dobra mam juz to i teraz pytanko :> mam potem 2x kliknac na ten komponent i wstawic miedzy begin i end te host itp ? bo jak tak robie to blad mam z linijka IdFTP1.Port := '21'; a blad wyglada tak
[Error] ftp.pas(50): Incompatible types: 'Integer' and 'String'

0

Port jest typu Integer, czyli 21 a nie '21'. W apostrofach dajesz Stringi.

0

może spróbuj bez ' '

0

czyli mniej wiecej cos takiego

IdFTP1.Port := 21;
IdFTP1.Username := 'anonymous';
IdFTP1.Password := 'haslo';
IdFTP1.Host := '127.0.0.1';

wklejam do tego tidftp ?
i potem jak klikam polacz to jakis blad jest, hmm
rozumiem ze to mam wkleic do polacz:

if not IdFTP1.Connected then
begin
  IdFTP1.Connect();
end;

?czy stringi wlasnie dac ?

0

Nie! Wklejasz to do button "Połącz"! Tylko tak jak pisałem nie "anymonus" tylko jak masz już serwer np. na YoYo czy PRV to używasz tych parametrów... A Connect daj samo Connect;, bez nazwiasów...

0

z tym "anymonus" to wiem ze trzeba zmieniac ale podaje tak dla przykladu zeby swoich danych nie podawac :P i teraz chodzi bez zarzutow (znaczy laczy sie)... i mam pytanie :> po co ja mialem dawac tidftp ? (chyba ci nerwy dzis zszarpie ;/) bo nic tam nie wstawialem... i teraz mam button od pobierania i dodaje do var localfile, remotefile : string;
i potem do buttona ktory ma sluzyc do pobierania dodaje

IdFTP1.get(Mariusz_Energy.ini, C:/Mariusz_Energy.ini);
i jak chce pobrac to wyskakuje blad "Destination file already exists" co ja zle robie ? (sry za szarpanie twoich nerwow :P)

0

chyba to jakies kpiny

mario713 napisał(a)

dobra mam juz to i teraz pytanko :> mam potem 2x kliknac na ten komponent i wstawic miedzy begin i end te host itp ? bo jak tak robie to blad mam z linijka IdFTP1.Port := '21'; a blad wyglada tak
[Error] ftp.pas(50): Incompatible types: 'Integer' and 'String'

mario713 napisał(a)

czyli mniej wiecej cos takiego

IdFTP1.Port := 21;
IdFTP1.Username := 'anonymous';
IdFTP1.Password := 'haslo';
IdFTP1.Host := '127.0.0.1';

wklejam do tego tidftp ?
i potem jak klikam polacz to jakis blad jest, hmm
rozumiem ze to mam wkleic do polacz:

if not IdFTP1.Connected then
begin
  IdFTP1.Connect();
end;

?czy stringi wlasnie dac ?

ludzie daja ci kody co musisz zrobic a ty nie umiesz nawet ich wykorzystac bo nie wiesz ze sie wpisuje kod pomiedzy begin i end.. poczytaj o podstawach delphi skoro chcesz pisac programy

poczytaj o indy

mario713
po co ja mialem dawac tidftp ? (chyba ci nerwy dzis zszarpie ;/) bo nic tam nie wstawialem...

wstawiasz bo ten komponent odpowiada za polaczenie z serwerem ftp

0

no znam podstawy i wiem ze sie wpisuje miedzy begin i end ale wolalem sie upewnic :P a tego pliku nie mam na dysku zapisanego :F na dzis skoncze z tym a jutro to moze dokoncze :P

0

najlatwiej jak pokazesz kod ktory napisales
wtedy userzy z forum moga sprawdzic i podpowiedziec gdzie blad itp

0

Do autora postu: weź zacznij od podstaw programowania - nie pytaj o każdy szczegół działania komponentów do FTPa - nikt Ci nie napisze gotowego programu

(musiałem to napisać, bo już raporty leciały w wątku).

0
Deti napisał(a)

Do autora postu: weź zacznij od podstaw programowania - nie pytaj o każdy szczegół działania komponentów do FTPa - nikt Ci nie napisze gotowego programu

Po pierwsze chyba tematu nie postu^^ po drugie czytalem caly poradnik nie na tej stronie tylko taki inny i troche krotszy ;/ ale przeczytalem caly i skapowalem i to byly podstawy...
a co do kodu to:

unit ftp;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdExplicitTLSClientServerBase, IdFTP;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    IdFTP1: TIdFTP;
    Button3: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure IdFTP1AfterClientLogin(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

    var
  localfile, remotefile : string;
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
IdFTP1.Port := 21;
IdFTP1.Username := 'mojlogin';
IdFTP1.Password := 'mojehaslo';
IdFTP1.Host := 'shh.shells.pl';
if not IdFTP1.Connected then
begin
  IdFTP1.Connect;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if IdFTP1.Connected then
begin
  IdFTP1.Disconnect;
end;
end;

procedure TForm1.IdFTP1AfterClientLogin(Sender: TObject);
begin
IdFTP1.get("C:/Mariusz_Energy.ini", "Mariusz_Energy.ini");
end;

end

1 użytkowników online, w tym zalogowanych: 0, gości: 1