Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ini-Datei mit Ftp holen und dann verarbeiten (https://www.delphipraxis.net/110835-ini-datei-mit-ftp-holen-und-dann-verarbeiten.html)

kuba 25. Mär 2008 15:40


Ini-Datei mit Ftp holen und dann verarbeiten
 
Hallo,

ich möchte mit meinem Programm eine ini-Datei per FTP holen und dann weiterverarbeiten, also die Werte in meinem Programm in einem neuen Fenster anzeigen und ändern. Die Datei ist jedoch nach der Übertragung gesperrt, wenn ich das Programm nach der FTP-Übertragung neu starte funktioniert es.

Wo liegt das Problem, wie kann ich die Ini-Datei in meinem Programm weiterverarbeiten ?

Auszug aus dem Code:

Delphi-Quellcode:
procedure TForm14.Button6Click(Sender: TObject);
begin
   Deletefile(meine.ini);
   ListBox1.Clear;
   ListBox1.AddItem('Please wait ...',nil);
   idftp1.Username := Edit1.Text;
   idftp1.Password := Edit2.Text;
   idftp1.Host := Edit4.Text;
   idftp1.Port := StrToInt(Edit3.Text);
   idFtp1.Passive := True;
   try
        idFtp1.Connect;
        idFtp1.Get(meine.ini,ExtractFileName(meine.ini));
        ListBox1.AddItem('Transfer OK !!!',nil);
        idFtp1.Quit;
    except
        ListBox1.Clear;
        ListBox1.AddItem('Error downloading from Remote Server !!!',nil);
    end;
    idFtp1.Disconnect;
    //idFtp1.Free;
end;

procedure TForm22.FormCreate(Sender: TObject);
var
    Value  :string;
    Ini    :TIniFile;
begin
      ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'meine.ini');
      try
      Value := Ini.ReadString('IExplorer','ProxyEnable', Value);
      if Value = '1' then SetCheckedState(CheckBox1, NOT CheckBox1.Checked);
      Value := Ini.ReadString('IExplorer','ProxyServer', Value);
      LabeledEdit1.Text := Value;
      Value := Ini.ReadString('IExplorer','Start Page', Value);
      LabeledEdit2.Text := Value;
      Value := Ini.ReadString('IExplorer','ProxyOverride', Value);
      LabeledEdit3.Text:=Value;
      finally
        Ini.Free;
      end;
end;

Wer kennt sich aus ? Was läuft falsch ??

KUBA

Fussball-Robby 25. Mär 2008 16:56

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
Was heißt, sie ist gesperrt? Gibts ne Zugriffsverletzung?

Mfg

kuba 25. Mär 2008 17:15

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
nee, aber die übertragenen Werte werden in meinem Formular nicht angezeigt.
Es funktioniert wenn ich die Anwendung nach der FTP-Übertragung beende und neu starte, dann sind alle Werte in meinem Formular vorhanden.

KUBA

Matze 25. Mär 2008 17:25

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
Hallo,

meiner Meinung nach kann diese Zeile gar nicht erfolgreich kompiliert werden (genauso bei "DeleteFile"):

Delphi-Quellcode:
idFtp1.Get(meine.ini,ExtractFileName(meine.ini));
Der erste Parameter müsste der Dateiname/Pfad auf dem FTP-Server sein und dieser ist vom Typ String. Also wenn, dann so:

Delphi-Quellcode:
idFtp1.Get('meine.ini', 'meine.ini');
Ich würde lokal übrigens nur absolute Pfade verwenden, da sich relative Pfade aufs Arbeitsverzeichnis beziehen, das nicht unbedingt identisch mit dem Programmverzeichnis sein muss.

Grüße

Klaus01 25. Mär 2008 17:27

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
Wird die Ini bei Dir denn "nur" eingelesen
wenn die Application gestartet wurde?
Dein Codeauszug läßt darauf schließen.

Wenn Du die Datei nicht neu einließt nachdem
sie per ftp geladen wurde, kann Deine Application auch
keine neuen Werte anzeigen.

Grüße
Klaus

kuba 25. Mär 2008 18:10

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
Zitat:

Zitat von Matze
Hallo,

meiner Meinung nach kann diese Zeile gar nicht erfolgreich kompiliert werden (genauso bei "DeleteFile"):

Delphi-Quellcode:
idFtp1.Get(meine.ini,ExtractFileName(meine.ini));
Der erste Parameter müsste der Dateiname/Pfad auf dem FTP-Server sein und dieser ist vom Typ String. Also wenn, dann so:

Delphi-Quellcode:
idFtp1.Get('meine.ini', 'meine.ini');
Ich würde lokal übrigens nur absolute Pfade verwenden, da sich relative Pfade aufs Arbeitsverzeichnis beziehen, das nicht unbedingt identisch mit dem Programmverzeichnis sein muss.

Grüße

sorry, habe dort eine Edit.Text Box im Code.

Delphi-Quellcode:
  Deletefile(ExtractFileName(Edit7.Text));

  idFtp1.Get(Edit8.Text,ExtractFileName(Edit7.Text));
@Klaus

wie kann ich die Datei neu einlesen ??

Delphi-Quellcode:

procedure TForm22.FormCreate(Sender: TObject);
var
    Value  :string;
    Ini    :TIniFile;
begin
      ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'meine.ini');
      try
      Value := Ini.ReadString('IExplorer','Start Page', Value);
      LabeledEdit2.Text := Value;
      finally
        Ini.Free;
      end;
end;
ich denke ich öffne die Inidatei einfach beim FormCreate, oder wie ?

sorry Anfänger :stupid:

Ich habe den Eindruck, dass die Datei nach der FTP-Übertragung gesperrt ist ...

KUBA :coder:

pilic 25. Mär 2008 18:24

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
Du könntest dir eine Prozedur schreiben und sie immer aufrufen, wenn du sie brauchst.

Delphi-Quellcode:
procedure MacheWasMitDerIni(Pfad, Value: string);
var
    Ini    :TIniFile;
begin
  ini:=TIniFile.create(Pfad);
  try
    LabeledEdit2.Text := Ini.ReadString('IExplorer','Start Page', Value);
  finally
    Ini.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MacheWasMitDerIni('C:\...\meine.ini', 'Unbekannter Wert');
end;

Fussball-Robby 25. Mär 2008 18:27

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
Wird Form22 den nach dem Download überhaupt erstellt? Oder besteht sie schon vorher? Denn dann wird das OnCreate ja nicht mehr aufgerufen. Desweiteren: Bist du dir sicher, dass es in der Ini die Section 'IExplorer' und den Key 'Start Page' gibt? Gib doch als 3.Parameter bei Ini.ReadString mal 'Error' an, dann wirst dus ja sehen. Wurde die Datei, wenn du versuchst, sie zu öffnen, überhaupt schon erstellt? Prüf das doch mal mit if FileExists(FileName).

Mfg

kuba 25. Mär 2008 18:43

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
Aber beim FormCreate setze ich doch meine Anfangswerte in die Felder, das komische ist dass es funktioniert wenn ich das Programm beende und neu starte. Ich vermute dass FTP nicht richtig beendet wird und beim FormCreate die Werte aus der vorher vorhandenen Ini verwendet werden.

Also nochmal wenn ich das Programm ohne ini starte zeigt er garnix an, hole ich eine Ini per FTP dann werden die werte aus der alten Ini angezeigt.

Es scheint, dass die Ini-Datei beim Programmstart initialisiert wird, überschreibe ich die Ini-Datei indem ich per FTP eine neue hole dann muss ich das Programm neu starten sonst zeigt er mir nicht die Werte der neuen Datei an.

@Robert
Form22 wird erst nach dem Download aufgerufen, was heisst erstellt ? Habe einfach dem Projekt ein Formular hinzugefügt.

KUBA

Fussball-Robby 25. Mär 2008 18:52

Re: Ini-Datei mit Ftp holen und dann verarbeiten
 
Aber auch, wenn du Form22 erst später aufrufst, wird es schon beim Programmstart erstellt (auch wenn es dann noch unsichtbar ist). Somit wird nur beim Programmstart das OnCreate ausgeführt. Pack den Code mal in das OnShow-Ereignis von Form22, denn das wird immer aufgerufen, wenn du die Form aufrufst (Form22.Show).

Mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz