AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi WinInet erkennt keine .htaccess
Thema durchsuchen
Ansicht
Themen-Optionen

WinInet erkennt keine .htaccess

Ein Thema von hsbc · begonnen am 26. Jul 2008 · letzter Beitrag vom 28. Jul 2008
Antwort Antwort
Seite 2 von 2     12   
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#11

Re: WinInet erkennt keine .htaccess

  Alt 27. Jul 2008, 09:08
Hier ein kleiner Ausschnitt des relevanten Codes:

Delphi-Quellcode:
procedure Tfmain.LoescheVerz(Path: String);
var
  hSearch : HINTERNET;
  findData: TWin32FindData;
  fn: string;
begin
  hSearch := FtpFindFirstFile(hConnect, PChar(Path), findData, 0, 0);
  repeat
    fn := findData.cFileName;

// Wenn es sich um einen Dateinamen, welcher mit einem Punkt beginnt, handelt
// ist fn leer.

    if findData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then
    begin
Wie gesagt, es werden sämtliche Verzeichnisse und Dateien ordnungsgemäß in fn eingelesen, außer es handelt sich um einen Dateinamen, welcher mit einem Punkt beginnt. In diesem Falle ist der String fn leer.

mfg
Herbert
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#12

Re: WinInet erkennt keine .htaccess

  Alt 28. Jul 2008, 09:08
So wie es aussieht, dürfte es hier wirklich keine Lösung geben.

Schade - somit kann ich WinInet wohl für mein Vorhaben nicht verwenden, was ich zwar fast nicht glauben kann, da
die DLL von Microsoft kommt (oder funktioniert es vl. gerade deswegen nicht).

Wie könnte ich sonst noch (ohne Indy) alle Server-Dateien einlesen ???

Hat denn wirklich niemand eine Idee, wie es vl. doch mit WinInet funktionieren könnte?

Hier nochmals meine Ergebnisse:

Gegeben ist: Im Server-Verzeichnis steht (nur mehr) eine einzige Datei mit dem Namen .htaccess

Sobald ich folgende Zeile aufrufe:

  hSearch := FtpFindFirstFile(hConnect, PChar(Path), findData, 0, 0); enthält der Wert von hSearch den Wert NIL und GetLastError hat den Wert 18

Es wird also überhaupt nicht erkannt, dass hier noch eine Datei im Verzeichnis liegt.

Vielleicht hat doch noch jemand eine Idee.

mfg
Herbert
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#13

Re: WinInet erkennt keine .htaccess

  Alt 28. Jul 2008, 09:13
Hallo, vielleicht liefert MSDN-Library durchsuchenInternetGetLastResponseInfo mehr Informationen zum Fehler.

Zitat:
If GetLastError returns ERROR_INTERNET_EXTENDED_ERROR, as in the case where the function finds no matching files, call the InternetGetLastResponseInfo function to retrieve the extended error text, as documented in Handling Errors.
Thomas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: WinInet erkennt keine .htaccess

  Alt 28. Jul 2008, 09:14
Synapse, ICS, ...
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: WinInet erkennt keine .htaccess

  Alt 28. Jul 2008, 10:02
Hallo Herbert,

beim Forschen in meinem Archiv bin ich auf Code gestoßen, den ich für deinen Thread von neulich angefertigt hatte.

Delphi-Quellcode:
uses
  WinInet;

function FtpGetFiles(hInet: HInternet; user, password, server, localDir, remoteDir: String): Boolean;
var
  fd: TWin32FindData;
  hSession, hSearch: HINTERNET;
begin
  Result := False;
  hSession := InternetConnect(hInet,
    PChar(server), 21, PChar(user), PChar(password),
    INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0
  );
  if Assigned(hSession) then
  begin
    if not FtpSetCurrentDirectory(hSession, PChar(remoteDir)) then
      Exit;
    localDir := IncludeTrailingPathDelimiter(localDir);
    if not DirectoryExists(localDir) then
      MkDir(localDir);

    ChDir(localDir);

    hSearch := FtpFindFirstFile(hSession, nil, fd, 0, 0);
    if Assigned(hSearch) then
    begin
      Result := True;
      repeat
        if (fd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0) then
          Result := FtpGetFile(hSession,
                      fd.cFileName, PChar(localDir + fd.cFileName),
                      False, 64, FTP_TRANSFER_TYPE_UNKNOWN, 0
                    ) else
        if Pos(fd.cFileName, '..') = 0 then
          Result := FtpGetFiles(hInet,
                      user, password, server, localDir + fd.cFileName,
                      remoteDir + fd.cFileName
                    );
      until not (Result and InternetFindNextFile(hSearch, @fd));
      InternetCloseHandle(hSearch);
    end;
    InternetCloseHandle(hSession);
  end;
end;

procedure Test;
var
  hInet: HINTERNET;
begin
  hInet := InternetOpen('Test', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  if Assigned(hInet) then
  try
    FTPGetFiles(hInet, 'herbert', 'toppsigrid', 'localhost', 'c:\temp\hsbc\', '/hsbc/');
  finally
    InternetCloseHandle(hInet);
  end;
end;
Damit finde ich auch .htaccess - du bestimmt auch. Stelle mal ein minimales Demo-Projekt bereit, dann lässt sich dein Problem bestimmt eingrenzen.

Freundliche Grüße
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#16

Re: WinInet erkennt keine .htaccess

  Alt 28. Jul 2008, 12:38
Hallo marabu,

vielen Dank vorerst mal für dein Demo-Programm. Du wirst es nicht glauben, auch hier funktioniert alles einwandfrei, nur Dateien, welche mit einem Punkt beginnen, werden ebenfalls nicht erkannt bzw. heruntergeladen.

Ich habe mir zum Vergleich meine funktionierende Indy-Application angesehen. Bei Indy muss ich folgendes eingeben:

IdFTP.List(sl, '-a', true); wenn ich das '-a' durch '*.*' ersetze, werden ebenfalls keine .-Dateien mehr gefunden.

Nachdem deine Demo bei dir ja zum Erfolg führt, bin ich mir langsam aber sicher nicht mehr ganz im Klaren, ob hier bei mir nicht andere Faktoren mit im Spiel sind, nur halt welche.

Ich kann gerne ein Mini-Demo meinerseits bereitstellen, aber nachdem dein Demo bei mir ebenfalls keine .-Dateien findet, muss es wohl wo anders liegen.

mfg
Herbert
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#17

Re: WinInet erkennt keine .htaccess

  Alt 28. Jul 2008, 12:51
So, jetzt bin ich nochmal da.

Habe einfach mal probiert und den Parameter -a auch bei FtpFindFirstFile eingebegen:


    hSearch := FtpFindFirstFile(hSession, PChar('-a'), fd, 0, 0); und siehe da, jetzt werden auch Punkt-Dateien angezeigt.

Wie kann das sein, nirgend wo dokumentiert. Was hat dieses '-a' eigentlich auf sich?

mfg
Herbert
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: WinInet erkennt keine .htaccess

  Alt 28. Jul 2008, 12:58
Weist die CLI an auch versteckte Dateien anzuzeigen
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.
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