AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) WinExec, AnsiString und String und Delphi XE
Thema durchsuchen
Ansicht
Themen-Optionen

WinExec, AnsiString und String und Delphi XE

Ein Thema von marcoX · begonnen am 5. Aug 2011 · letzter Beitrag vom 5. Aug 2011
Antwort Antwort
marcoX

Registriert seit: 10. Jul 2011
45 Beiträge
 
#1

WinExec, AnsiString und String und Delphi XE

  Alt 5. Aug 2011, 02:12
WinExec(PAnsiChar('net user /add testuser '+PasswortVar),SW_HIDE); Hallo,
ist es normal, dass o.g. Code nur funktioniert, sofern PasswortVar als AnsiString deklariert ist? Wenns ein String ist, funktioniert es in Delphi XE nämlich nicht ( in 2006 schon).
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: WinExec, AnsiString und String und Delphi XE

  Alt 5. Aug 2011, 02:31
Win Exec gilt schon lange als veraltet und dient nur noch der Unterstützung von 16-Bit Programmen. Nimm lieber shellexecute, ShellexecuteEx oder CreateProcess. Un der Code funktioniert deshalb nur mit AnsiString weil der Datentyp String ab Delpghi2009 standardmäßig ein WideString (Unicode) ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: WinExec, AnsiString und String und Delphi XE

  Alt 5. Aug 2011, 06:03
Und mit den genannten Funktionen kannst du dann auch auf PChar statt PAnsiChar casten. Das ist in XE dann ein PWideChar, so dass auch Unicodezeichen im Dateinamen funktionieren.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: WinExec, AnsiString und String und Delphi XE

  Alt 5. Aug 2011, 09:35
Wobei man doch den Grund des Nichtfunktionierens hätte auch seber hätte rausbekommen können,
wenn man mal auf das hört, was einem der Compiler und die Dokumentation sagt.
  • ANSI: WinExec ist mit LPCSTR deklariert (in den Delphi-Sourcen und auch im MSDN), welches man auf PAnsiChar zurückverfolgen kann
  • String/UnicodeString geht nicht: Ja, da wirft Delphi einem doch etwas von "unsicherer Typumwandlung" um die Ohren und das nicht umsonst
    • Hinweise: kann man drauf hören / zumindestens gelesen sollte man es haben
    • Warnungen: sollte man beachten ... wenn nicht ... tja, das hast'e ja gerade mitbekommen
    • Fehler / Fatale Fehler: kann man eh nicht überhören und muß es beheben
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:15 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