![]() |
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 |
Re: Ini-Datei mit Ftp holen und dann verarbeiten
Was heißt, sie ist gesperrt? Gibts ne Zugriffsverletzung?
Mfg |
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 |
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:
Der erste Parameter müsste der Dateiname/Pfad auf dem FTP-Server sein und dieser ist vom Typ String. Also wenn, dann so:
idFtp1.Get(meine.ini,ExtractFileName(meine.ini));
Delphi-Quellcode:
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.
idFtp1.Get('meine.ini', 'meine.ini');
Grüße |
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 |
Re: Ini-Datei mit Ftp holen und dann verarbeiten
Zitat:
Delphi-Quellcode:
@Klaus
Deletefile(ExtractFileName(Edit7.Text));
idFtp1.Get(Edit8.Text,ExtractFileName(Edit7.Text)); wie kann ich die Datei neu einlesen ??
Delphi-Quellcode:
ich denke ich öffne die Inidatei einfach beim FormCreate, oder wie ?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; sorry Anfänger :stupid: Ich habe den Eindruck, dass die Datei nach der FTP-Übertragung gesperrt ist ... KUBA :coder: |
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; |
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 |
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 |
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 11:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz