Autor Beitrag
korny boy
Hält's aus hier
Beiträge: 8

WinXP
Delphi 7 Personal
BeitragVerfasst: Fr 09.02.07 18:04 
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...

ausblenden 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 user profile iconTino: B-Tags durch Delphi-Tags ersetzt.
muetzenjoe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win XP / Win Vista
# Delphi 6 Enterprise; # HTML Editor Phase 5; # Ulead Gif Animator 5;
BeitragVerfasst: Fr 09.02.07 23:29 
[quote="user profile iconkorny boy"]Hallo Leute,

ausblenden 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'); //ICH DENKE HIER IST DER FEHLER!!! DA MUSS C:\ hin!

 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 Threadstarter
Hält's aus hier
Beiträge: 8

WinXP
Delphi 7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: 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:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
korny boy Threadstarter
Hält's aus hier
Beiträge: 8

WinXP
Delphi 7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win XP / Win Vista
# Delphi 6 Enterprise; # HTML Editor Phase 5; # Ulead Gif Animator 5;
BeitragVerfasst: So 11.02.07 01:39 
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: So 11.02.07 11:35 
Und unter nem richtig eingerichteten System hast du unter C:\ keinen Schreibzugriff. :wink:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.