Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Was ist & bei C (https://www.delphipraxis.net/88692-ist-bei-c.html)

matashen 19. Mär 2007 14:52


Was ist & bei C
 
Hallo zusammen,

ich bin zur Zeit dabei eine Anwendung für WinCE mit Lazarus zu schreiben (Delphi kanns ja leider noch nicht). Dabei muß ich den PDA auf ein Netzlaufwerk mappen. Eigentlich null problemo dachte ich, hatte ich auch schon xmal gemacht.

Funzte aber nicht mit meinen Routinen da WNetAddConnection2W auf WinCE nicht existiert.

Nach googeln bin ich dann auf WNetAddConnection3 gestoßen. Gut dann schreib ichs halt so! denkste !

beim Compilen sagt mir dann Lazarus bei folgendem Code

Delphi-Quellcode:
function ConnectToNetworkDriveW(LocalName: WideString; RemoteName: wideString; Username: WideString; Password: WideString;
  RestoreAtLogon: boolean): DWORD;
var
  nres      : TNetResource;
  dwFlags          : DWORD;
begin
  dwFlags := 0;
  FillChar(nres, SizeOf(nres), #0);
  with Nres do
  begin
    dwType := RESOURCETYPE_DISK;
    lpLocalName := PWideChar(LocalName);
    lpRemoteName := PwideChar(RemoteName);
    lpProvider := nil;
  end;

  if (RestoreAtLogon) then
    dwFlags := dwFlags or CONNECT_UPDATE_PROFILE;
  Result := wNetAddConnection3(form3.handle,nres, PWideChar(Password), PWideChar(Username), dwFlags);
end;
Unit2.pas(60,49) Error: Incompatible type for arg no. 2: Got "NETRESOURCE", expected "LPNETRESOURCE"

Also googel ich schon den ganzen nachmittag und bin auf folgenden C# Code gestoßen
Zitat:

#include "windows.h"
#include "winnetwk.h"
#include "aygshell.h" //Shell API

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd) {

NETRESOURCE ns;
DWORD lLastError = NO_ERROR;

ns.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE;
ns.dwScope = 0;
ns.dwType = RESOURCETYPE_ANY;
ns.dwUsage = 0;
ns.lpComment = NULL;
ns.lpLocalName = _T("fileshare");
ns.lpProvider = _T("Microsoft Windows Network");
ns.lpRemoteName = _T("\\\\<NetBios-Name>\\<Share-Name>");

lLastError = WNetAddConnection3(NULL, &ns, _T("<password>"), _T("<username>"), CONNECT_UPDATE_PROFILE);
Meine Frage:
was heißt das & vor dem ns in der letzten Zeile und wie krieg ich das in Lazarus hin.
Im struct von Lazarus steht:
Delphi-Quellcode:
&#9553;    NETRESOURCE = record
&#9553;         dwScope : DWORD;
&#9553;         dwType : DWORD;
&#9553;         dwDisplayType : DWORD;
&#9553;         dwUsage : DWORD;
&#9553;         lpLocalName : LPTSTR;
&#9553;         lpRemoteName : LPTSTR;
&#9553;         lpComment : LPTSTR;
&#9553;         lpProvider : LPTSTR;
&#9553;      end;
&#9553;    LPNETRESOURCE = ^NETRESOURCE;
Und ich steh irgendwie auf dem Schlauch....

ich hoffe ihr könnt mir helfen

Danke!

Oxmyx 19. Mär 2007 14:59

Re: Was ist & bei C
 
& ist in diesem Fall der Referenzierungsoperator, &a liefert also die Adresse von a zurück.

DGL-luke 19. Mär 2007 15:01

Re: Was ist & bei C
 
und die delphi entsprechung ist dann '@'.

matashen 19. Mär 2007 15:10

????? Was ist & bei C
 
Dickes Dankeschön :thumb: , der Compiler meckert nicht mehr. @ hab ich glaub noch nie gebraucht :gruebel:

Hab aber mit ewigen Probieren noch ein paar Fehler reingebracht! :wall:

Aber das werd ich schon selber lösen. :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 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