Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi ShellExecution Brauche Hilfe (https://www.delphipraxis.net/200444-shellexecution-brauche-hilfe.html)

EWeiss 20. Apr 2019 19:23

AW: ShellExecution Brauche Hilfe
 
Zitat:

Typen PWideChar
Auch wenn der Typ PChar automatisch nach PWideChar gecastet wird ist trotzdem PWideChar der richtige DatenTyp nicht PChar.

gruss

DieDolly 20. Apr 2019 19:27

AW: ShellExecution Brauche Hilfe
 
Zitat:

Nein, das ist nicht die Lösung: habe ich auch schon versucht.
Ich verstehe das Problem nicht. STRG gedrückt halten und auf ShellExecute klicken wird dein Problem in einer Minute lösen.

Selbst bei Eingabe der ersten Klammer nach ShellExecute sollte ein Hint angezeigt werden wo genau steht welche Typen zu übergeben sind. PWideChar.

Als kleiner Tipp vielleicht noch. Du übergibst einen Wert der nicht dem entspricht was ShellExecute verlangt.
Mehr aber sage ich nicht. Bisschen anstrengen muss man sich auch.

Aller letzter Tipp: LPCTSTR > https://docs.microsoft.com/en-us/win...-shellexecutea

EWeiss 20. Apr 2019 19:41

AW: ShellExecution Brauche Hilfe
 
Zitat:

Aller letzter Tipp: LPCTSTR > https://docs.microsoft.com/en-us/win...-shellexecutea
Sorry das ist falsch..
Es geht hier um PWideChar nicht PAnsiChar oder PChar = PAnsiChar(bei älteren Delphi Versionen)

ShellExecute(W) nicht ShellExecuteA
https://docs.microsoft.com/en-us/win...-shellexecutew
Aber ich denke damit ist er überfordert.

Du schreibst ja vorher selbst noch
Zitat:

nach ShellExecute sollte ein Hint angezeigt werden wo genau steht welche Typen zu übergeben sind. PWideChar.
und verzweigst dann auf ShellExecuteA.

gruss

DieDolly 20. Apr 2019 19:49

AW: ShellExecution Brauche Hilfe
 
Ich wusste nicht, dass man nil als Operation übergeben kann. Mein Fehler.
Trotzdem ist sein Konzept mehr als fragwürdig. Man spielt nicht mit der Zwischenablage herum.

Noch viel wichtiger ist aber, dass man ab und zu auch mal in die Hilfe oder in die Quellcodes guckt.

EWeiss 20. Apr 2019 19:51

AW: ShellExecution Brauche Hilfe
 
Zitat:

Zitat von DieDolly (Beitrag 1430707)
Ich wusste nicht, dass man nil als Operation übergeben kann. Mein Fehler.
Trotzdem ist sein Konzept mehr als fragwürdig. Man spielt nicht mit der Zwischenablage herum.
Noch viel wichtiger ist aber, dass man ab und zu auch mal in die Hilfe oder in die Quellcodes guckt.

Na ja hat nichts mit Nil zu tun sondern damit das du ihm zu einem Link auf LPCTSTR = PAnsiChar verwiesen hast.
Ansonsten ja gebe ich dir recht.

Bin raus.

grusss

Dalai 20. Apr 2019 21:51

AW: ShellExecution Brauche Hilfe
 
[Teilweise OT]

Zitat:

Zitat von EWeiss (Beitrag 1430704)
Auch wenn der Typ PChar automatisch nach PWideChar gecastet wird ist trotzdem PWideChar der richtige DatenTyp nicht PChar.

Ist er nicht. Warum? Wenn man ShellExecute verwendet, nimmt man PChar, bei ShellExecuteA nimmt man PAnsiChar und bei ShellExecuteW nimmt man PWideChar. Nur so funktioniert es in allen Delphi-Versionen. Ich frag mich wirklich, warum dieser Fehler bzw. die Diskussion dazu immer wieder auftaucht. Konkrete Typen (Ansi/Wide) sollte man ausschließlich dann verwenden, wenn die Funktionen bzw. deren Datentypen das verlangen, z.B. weil es nur eine Definition davon gibt. Konkretes Beispiel: MSDN-Library durchsuchenMapAndLoad() gibt's nur mit Ansi.

[/OT]

Zum Thema: Auch ich kann nur deutlich davon abraten, an der Zwischenablage zu fummeln. Die Zwischenablage gehört dem Benutzer, nicht irgendeinem Programm! Da hilft es auch wenig, wenn der Inhalt der Zwischenablage vorher gesichert und hinterher wiederhergestellt wird. Sowas ist einerseits schlechtes Design, und bei Verwendung von Multi-Clipboard-Programmen (wie z.B. ArsClip bei mir) fällt sowas ganz besonders negativ auf.

Stattdessen wäre es viel besser, den Inhalt direkt zu übergeben und in den Parameterstring für ShellExecute einzubauen.

Es gibt übrigens noch weitere Probleme mit dem Ansatz: Was ist mit Umlauten und Sonderzeichen? Stichwort Zeichensatzkodierung. Ich weiß nicht genau, wie das mit Leerzeichen ist, ob die auch speziell kodiert werden müssen (%20) - dafür gibt's bestimmt auch einen Fachbegriff.

Grüße
Dalai

EWeiss 20. Apr 2019 21:57

AW: ShellExecution Brauche Hilfe
 
[ganz OT]
Zitat:

Wenn man ShellExecute verwendet, nimmt man PChar
Das ist schlichtweg falsch.

Zitat:

Nur so funktioniert es in allen Delphi-Versionen.
Es ging nicht um die frage ob es bei allen Delphi Versionen so funktioniert.

Fakt ist wenn ich in D2010 PChar verwende wird PChar automatisch zu PWideChar konvertiert oder willst du das bezweifeln?
Wenn ich ShellExecute ohne A oder W aufrufe wird Automatisch von ShellExecuteW ausgegangen versuch es doch einfach.

Die ganze Automatische Konvertierung ist eh ein Witz unter Delphi und dient nur den zweck um eine Abwärtskompatibilität zu erhalten.
In keiner von mir verwendeten Programmiersprache wird so mit Dateitypen umgegangen. (Mein großes Problem mit Delphi)

OK war schon raus aber das musste noch gesagt werden.
Aber für die, die immer recht behalten wollen was steht im Shot! PChar oder PWideChar.
Wenn man mir glauben mag das ich noch lesen kann dann steht dort ganz deutlich für jeden der lesen kann PWideChar!

Zitat:

Ich frag mich wirklich, warum dieser Fehler bzw. die Diskussion dazu immer wieder auftaucht.
Ganz einfach weil deine Aussage einfach falsch und nicht zutreffend ist.
Aber wenn du meinst es ist immer noch PChar nun dann kann ich dir nicht helfen :)

[/ganz OT]

gruss

Delphi.Narium 20. Apr 2019 22:06

AW: ShellExecution Brauche Hilfe
 
Was ich nicht verstehe:

Die Fehlermeldung lautete:
Zitat:

schreibe kommt die Fehlermeldung: Inkompatible Typen PWideChar und String!?
Warum sollte man hier was anderes als PWideChar nehmen, wenn doch explizit PWideChar verlangt wird?

EWeiss 20. Apr 2019 22:10

AW: ShellExecution Brauche Hilfe
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1430714)
Was ich nicht verstehe:

Die Fehlermeldung lautete:
Zitat:

schreibe kommt die Fehlermeldung: Inkompatible Typen PWideChar und String!?
Warum sollte man hier was anderes als PWideChar nehmen, wenn doch explizit PWideChar verlangt wird?

Und ich verstehe nicht wie @Dalai schreibt das man PChar statt dessen nehmen soll.. Sorry das ist einfach Quatsch wie mein ScreenShot belegt.

gruss

DieDolly 20. Apr 2019 22:14

AW: ShellExecution Brauche Hilfe
 
Ich denke es wäre sehr hilfreich, wenn der Fragende uns erst einmal mitteilt, welche Delphiversion er hat.
Ich kann mir kaum vorstellen, dass er Berlin Pro hat bei so einem einfachen Problem. Außerdem hätte er dann schon lange in die Delphiquellcodes reingeguckt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.
Seite 3 von 4     123 4      

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