Einzelnen Beitrag anzeigen

Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#1

WebDav - Laufwerk - ChatPGT

  Alt 3. Feb 2023, 17:03
Guten Abend,

schon länger habe ich den Gedanken im Kopf, mir ein kleines Tool zu schreiben das für mein WebDav ein Lokales Laufwerk (kein Netzwekordner) erstellt.

Beschäftigt habe ich mich mit Netzwerk-/Web Programmierung bisher wenig, fast gar nicht, bis auf Links aufrufen, bissel Browserkram.

Neugierig wie ich bin, fragte ich einfach mal ChatPGT wie das geht .
Ich habe eigentlich nicht viel erwartet. ChatPGT hat mir aber Code präsentiert, den ich für schlüssig hielt. Wohl weil ich 95% davon eh nicht verstehe.
Ich kopierte den Code nach Delphi und Überraschung, er "funktionierte".
Also nicht ganz. Es gab keine Errors, das Kompilieren lief problemlos durch. Nur ohne Ergebnis. Es wird kein Laufwerk erstellt, einfach nichts.

Ist der Code von ChatPGT komplett strubbelig aber kompilierbar? Veräppelt ChatPGT mich und der Code bezweckt etwas ganz anderes?
Wäre der Code voller Fehler, hätte es mich nicht gewundert. Das er problemlos kompiliert schon.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

const
  CONNECT_INTERACTIVE = $00000008;
  CONNECT_PROMPT = $00000010;
  CONNECT_REDIRECT = $00000080;
  CONNECT_UPDATE_PROFILE = $00000001;
  RESOURCETYPE_DISK = $00000001;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

function WNetAddConnection2A(lpNetResource: PNetResourceA;
  lpPassword: PChar; lpUserName: PChar; dwFlags: DWORD): DWORD; stdcall;
  external 'mpr.dllname 'WNetAddConnection2A';

function MapWebDAV(const RemotePath, LocalDrive: string;
  const UserName, Password: string): Boolean;
var
  NetResource: TNetResourceA;
  Drive: Char;
begin
  Drive := LocalDrive[1];
  FillChar(NetResource, SizeOf(NetResource), 0);
  with NetResource do
  begin
    dwType := RESOURCETYPE_DISK;
    lpRemoteName := PAnsiChar(RemotePath);
    lpLocalName := PAnsiChar(Drive + ':');
    lpComment := nil;
    lpProvider := nil;
  end;
  Result := WNetAddConnection2A(@NetResource, PChar(Password),
    PChar(UserName), CONNECT_INTERACTIVE or CONNECT_PROMPT or
    CONNECT_UPDATE_PROFILE) = NO_ERROR;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MapWebDAV('https://nx34493.your-storageshare.de/remote.php/dav/files/Andreas/', 'Z:', 'User', 'PW');
end;

end.
  Mit Zitat antworten Zitat