Autor Beitrag
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 01.07.05 12:04 
Hallo zusammen !

ich habe folgendes problem, angenommen ich habe einen ordner C:\test\ und einen url-pfad http:\\www.test.de\images\test\123.gif.

jetzt möchte ich in meinem ordner C:\test\ diese ordnerstruktur erstellen, also C:\test\images\test\ und dort soll die 123.gif gespeichert werden. ich habe jetzt schon einiges versucht, aber irgendwie kommt da immer ein backslash zu viel oder garnichts oder nur müll.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
      path := copy(memo2.Lines[j], pos(url_path, memo2.Lines[j]) + length(url_path), length(memo2.lines[j]) - (pos(url_path, memo2.Lines[j]) + length(url_path) - 1)); 
      path := deletefirstslash(path);
      path := slashtobackslash(path);
      filename := extractfiledir(html_path) + path;
      path := extractfilepath(filename);
      showmessage(path);  //test
      showmessage(filename);  //test
      if forcedirectories(path) then
        Download(memo2.lines[j], filename);

- memo2.lines[j] ist http:\\www.test.de\images\test\123.gif
- url_path ist www.test.de
- html_path ist C:\test\index.html

und hier noch die funktionen:
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:
function DeleteLastSlash(str: string): string;
var
  i: integer;
  str2: string;
begin
  str2 := str;
  for i := length(str2) downto 1 do
    if (str2[i] = '/'or (str2[i] = '\'then
      begin
        str2[i] := #0;
        break;
      end;
  result := str2;
end;

function DeleteFirstSlash(str: string): string;
var
  i: integer;
  str2: string;
begin
  str2 := str;
  for i := 1 to length(str2) do
    if (str2[i] = '/'or (str2[i] = '\'then
      begin
        str2[i] := #0;
        break;
      end;
  result := str2;
end;

function SlashtoBackSlash(str: string): string;
var
  i: integer;
  str2: string;
begin
  str2 := str;
  for i := 1 to length(str2) do
    if str2[i] = '\' then
      str2[i] := '/';
  result := str2;
end;

Download lädt einfach nur die datei (1. variable) in den dateinamen (2.variable), also zb download('www.test.de\bild1.jpg''C:\bild1.jpg')
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: So 10.07.05 10:17 
Ich würde die beiden etwas anders schreiben. #0 terminiert zwar, ist aber trotzdem ein Zeichen, dass im String weiterhin vorkommt.
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:
23:
24:
25:
26:
27:
28:
29:
30:
function DeleteLastSlash(str: string): string;  
var  
  i: integer;  
  str2: string;  
begin  
  str2 := str;  
  for i := length(str2) downto 1 do  
    if (str2[i] = '/'or (str2[i] = '\'then  
      begin  
        Delete(Str2,i,1);  
        break;  
      end;  
  result := str2;  
end;  

 
function DeleteFirstSlash(str: string): string;  
var  
  i: integer;  
  str2: string;  
begin  
  str2 := str;  
  for i := 1 to length(str2) do  
    if (str2[i] = '/'or (str2[i] = '\'then  
      begin  
        Delete(Str2,i,1);  
        break;  
      end;  
  result := str2;  
end;
Wie immer ungetestet 8)

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.