AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kurzes Delphiprogramm in dll umwandeln.
Thema durchsuchen
Ansicht
Themen-Optionen

Kurzes Delphiprogramm in dll umwandeln.

Ein Thema von Explorer · begonnen am 13. Okt 2007 · letzter Beitrag vom 4. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Explorer

Registriert seit: 10. Aug 2006
Ort: im Rhein-Main-Gebiet
21 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Kurzes Delphiprogramm in dll umwandeln.

  Alt 13. Okt 2007, 15:04
Hallo Forum,

habe mir ein kleines Programm geschrieben, welches den Usernamen ausliest.
Möchte nun dasselbige in eine dll umschreiben, was mir einfach nicht gelingen mag.
Was mache ich falsch ?

Über einen konstruktiven Tipp wäre ich dankbar.

Mit besten Grüßen

Explorer

---------Prog--------------

Delphi-Quellcode:
unit user_ermitteln;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;


procedure ErmittleUser(MyWideString: PWideChar); stdcall; export;


implementation


procedure ErmittleUser(MyWideString: PWideChar); stdcall; export;

var
User_angemeldet: String;
UserName: String;
UserNameLen: DWord;
StringLaenge :Integer;

begin
If GetUserName(PChar(UserName), UserNameLen) Then
begin
User_angemeldet := Copy(UserName,1,UserNameLen - 1);
StringLaenge := Length(User_angemeldet)+1 ;
StringToWideChar(User_angemeldet, MyWideString, StringLaenge);
ShowMessage(User_angemeldet);
end
else
StringLaenge := Length('unbekannt')+1 ;
StringToWideChar('unbekannt', MyWideString, StringLaenge)
end;



end.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 13. Okt 2007, 15:06
Unit in ein Dll-Projekt einbinden und gewünschte Funktion(en) exportieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Explorer

Registriert seit: 10. Aug 2006
Ort: im Rhein-Main-Gebiet
21 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 13. Okt 2007, 17:12
Zitat von mkinzler:
Unit in ein Dll-Projekt einbinden und gewünschte Funktion(en) exportieren.
-Unit ist ! bereits in eine lib eingebunden und - leicht aus dem code ersichtlich - auch bereits exportiert.

Das Problem ist, dass ich über GetUserName keinen Wert zurück geliefert erhalte.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 13. Okt 2007, 17:47
Wie rufst du sie denn auf? Und warum ist das Argument ein PWideChar, wenn du in der Funktion nur mit normalen Strings arbeitest?

Und zu Strings und DLLs: http://www.michael-puff.de/Artikel/2...ring_DLL.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 13. Okt 2007, 17:57
Das Problem wird der Aufruf der GetuserName-Funktion in der Win-API sein.
Mich wundert nur das es nicht kracht. Könnte aber sein weil UserNameLen zufälligerweise immer 0 ist und damit die Funktion weis das sie einen Puffer der Länge 0 hat in den sie den Namen kopieren kann.

Und nochwas: Wer sorgt dafür das die Variable MyWideString auch auf einen Speicherbereich zeigt der auch angefordert wurde? Letzendlich ist die Funktion ErmittleUser eine zu 100% sinnlose Funktion wenn man sie in einer DLL mit C-Kompatibler Schnittstelle bereitstellt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Explorer

Registriert seit: 10. Aug 2006
Ort: im Rhein-Main-Gebiet
21 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 13. Okt 2007, 19:28
Zitat von Luckie:
Wie rufst du sie denn auf? Und warum ist das Argument ein PWideChar, wenn du in der Funktion nur mit normalen Strings arbeitest?

Und zu Strings und DLLs: http://www.michael-puff.de/Artikel/2...ring_DLL.shtml
Das Interface meiner Datenbank nimmt nur PWideChar entgegen.
  Mit Zitat antworten Zitat
Explorer

Registriert seit: 10. Aug 2006
Ort: im Rhein-Main-Gebiet
21 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 13. Okt 2007, 19:30
Zitat von Bernhard Geyer:
Das Problem wird der Aufruf der GetuserName-Funktion in der Win-API sein.
Mich wundert nur das es nicht kracht. Könnte aber sein weil UserNameLen zufälligerweise immer 0 ist und damit die Funktion weis das sie einen Puffer der Länge 0 hat in den sie den Namen kopieren kann.

Und nochwas: Wer sorgt dafür das die Variable MyWideString auch auf einen Speicherbereich zeigt der auch angefordert wurde? Letzendlich ist die Funktion ErmittleUser eine zu 100% sinnlose Funktion wenn man sie in einer DLL mit C-Kompatibler Schnittstelle bereitstellt.
Genau das ist scheinbar das tatsächliche Problem. GetUserName liefert eben keinen String zurück.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 13. Okt 2007, 19:44
Dann lies dir mal durch, was in meinem verlinktem Artikel steht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Explorer

Registriert seit: 10. Aug 2006
Ort: im Rhein-Main-Gebiet
21 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 14. Okt 2007, 11:33
Zitat von Luckie:
Dann lies dir mal durch, was in meinem verlinktem Artikel steht.
Ich bringe das Problem auf den Punkt: ich benötige einen Zugriff auf die GetUserName-Funktion in der Windows.pas, weiss indes nicht, wie dies zu bewerkstelligen ist.

näheres unter: http://www.delphi-forum.de/topic_Kur...eln_77313.html

Gruß
Explorer
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 14. Okt 2007, 12:19
Zitat von Explorer:
Zitat von Luckie:
Dann lies dir mal durch, was in meinem verlinktem Artikel steht.
Ich bringe das Problem auf den Punkt: ich benötige einen Zugriff auf die GetUserName-Funktion in der Windows.pas, weiss indes nicht, wie dies zu bewerkstelligen ist.
Lesen ist angesagt. Einerseits hat Luckie dich auf ein Tutorial hingewiesen das mit Sicherheit die üblichen Fehler bei Verwendung von P(Wide)Chars auflistet und andererseits habe ich dich genauer auf die Fehler in deinem Code hingewiesen. Wenn du dieses Tutorial nicht lesen willst werden Luckie und ich dir nicht weiter helfen wollen. Und ab es andere noch wollen?

Zitat von Explorer:
Bringt keine neuen Infos.


Wenn du nun eine fertige funktionsfähige Implementierung der verwendung von GetUserName haben willst, schau dir die Funktion GetLocalUserName aus der Unit JclSysInfo der JCL an und verstehe was dort anders gemacht wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:49 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