Entwickler-Ecke
Internet / Netzwerk - FTP: download+editieren+upload...
korny boy - Fr 09.02.07 18:04
Titel: FTP: download+editieren+upload...
Hallo Leute,
es ist doch eigentlich so simpel aber ich kriegs nicht auf die reihe...
Ich möchte eine Textdatei von nem FTP-Server holen, editieren und wieder hochladen...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var zeile:string;
begin
zeile:='Test'; Memo1.Clear;
try ftp.Get('text.txt','C:\text.txt',true,true); except showmessage('error:download'); end;
try ftp.Delete('text.txt'); except showmessage('error:delete'); end;
memo1.Lines.LoadFromFile('C:\text.txt'); deletefile('C:\text.txt'); memo1.Lines.Add(zeile); memo1.Lines.SaveToFile('text.txt');
try ftp.Put('C:\text.txt','text.txt',true); except showmessage('error:upload'); end;
end; |
Das funktioniert so nicht...Die Datei enthält immer nur einmal 'Test' alle weiteren Male funktioniert es nicht, obwohl keine Fehlermeldung kommt...
gruß
korny boy
Moderiert von
Tino: B-Tags durch Delphi-Tags ersetzt.
muetzenjoe - Fr 09.02.07 23:29
Titel: Re: FTP: download+editieren+upload...
[quote="
korny boy"]Hallo Leute,
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var zeile:string;
begin
zeile:='Test'; Memo1.Clear;
try ftp.Get('text.txt','C:\text.txt',true,true); except showmessage('error:download'); end;
try ftp.Delete('text.txt'); except showmessage('error:delete'); end;
memo1.Lines.LoadFromFile('C:\text.txt'); deletefile('C:\text.txt'); memo1.Lines.Add(zeile); memo1.Lines.SaveToFile('text.txt'); try ftp.Put('C:\text.txt','text.txt',true); except showmessage('error:upload'); end;
end; |
du speicherst die geänderte datei nicht nach "C:\". ich denke das ist der fehler!
teste das mal bitte und gib nochmal bescheid! (auch wenns schon lange her ist!)
korny boy - Sa 10.02.07 23:04
jo alles klar, muetzenjoe, jetzt funktioniert das...*an den kopf fass*
war wohl ein bisschen zu blockiert den tag^^
danke für deine Hilfe!
gruß
KoRny Boy
jakobwenzel - Sa 10.02.07 23:06
Generell solltest du keine Dateien nach C:\ speichern, sondern hierfür eher in den TEMP-Ordner.
Code zum auslesen wo der ist, findest du per Suche. :wink:
korny boy - So 11.02.07 00:40
Das war auch nur ein Beispiel, dessen was ich machen wollte in verbindung mit einem gaaaanz großen projekt :P
Versteh ich gerade trotzdem nicht ganz...aber ich mach mich mal auf die Suche und dann editier ich hier mal mein falls immernoch vorhandenes unverständnis rein...
gruß
korny boy
Änderung:
Ich hab bei der Suche jetzt "Temp" eingegeben...was schlaueres ist mir nicht eingefallen, was ich da eingeben sollte... und ich hab nichts gefunden außer 1000themen, die aber an und für sich nichts damit zu hatten...
Und nun zu meiner Frage diesbezüglich. Wo ist der Unterschied zwischen C:\ und C:\...\Temp ?
Ist doch beides auf C:\ und dürfte die partition gleich stark belasten, egal welcher ordner...
muetzenjoe - So 11.02.07 01:39
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
| Temporäres Verzeichnis ermitteln GetTempPath, GetEnvironmentVariable
--------------------------------------------------------------------------------
In diesem Artikel wird gezeigt, wie man auf verschiedene Weisen das Verzeichnis für temporäre Dateien ermitteln kann. Das Verzeichnis hat den Zweck Dateien aufzunehmen, die nur kurzfristig von einem Programm benötigt werden. Um die Löschung der dort abgelegten Dateien muss sich der Programmierer allerdings selbst kümmern.
Als bevorzugte Lösung sollte die entsprechende API-Funktion verwendet werden:
function GetTempDir: String; var Dir: String; Len: DWord; begin SetLength(Dir,MAX_PATH); Len:=GetTempPath(PChar(Dir),MAX_PATH); if Len>0 then begin SetLength(Dir,Len); Result:=Dir; end else RaiseLastOSError; end; RaiseLastOSError ist erst ab Delphi 6 verfügbar. Programmierer, die mit älteren Versionen arbeiten müssen an dieser Stelle RaiseLastWin32Error verwenden.
Des Weiteren gibt es die Möglichkeit das Temp-Verzeichnis über eine Umgebungsvariable auszulesen:
function GetTempDir: String; begin result := SysUtils.GetEnvironmentVariable('temp'); end; Die entsprechende Umgebungsvariable heißt 'temp'. Eine Liste weiterer Umgebungsvariablen finden Sie in der PSDK unter dem Eintrag "environments, Environment property".
Da die o.g. Funktion erst ab Delphi 6 in der Unit SysUtils gekapselt ist, müssen Besitzer älterer Versionen direkt auf die API zurückgreifen:
function GetTempDir: String; var lSize: Integer; buffer: String; begin lSize:=Windows.GetEnvironmentVariable('temp','',0); if lSize>0 then begin SetLength(buffer,lSize); Windows.GetEnvironmentVariable('temp',PChar(buffer),lSize) ; Result:=Buffer; end else RaiseLastWin32Error; end; Das Verzeichnis wird bei allen drei genannten Möglichkeiten im 8.3-Format zurückgegeben.
In verschiedenen FAQs findet man immer wieder Lösungen, wo dem Programmierer gezeigt wird, wie man das Temp-Verzeichnis über die Registry ermitteln kann. Von dieser Vorgehensweise wird generell abgeraten, da sich die Positionen in der Registry mit jeder Windows-Version ändern können. 7907479601066767 |
Quelle: Easy Delphi Helper
p.s:
temps werden oder sollten regelmässig geleert bzw. gelöscht werden.
jakobwenzel - So 11.02.07 11:35
Und unter nem richtig eingerichteten System hast du unter C:\ keinen Schreibzugriff. :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!