Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   ShellExecute Problem mit zweitem Parameter (https://www.delphipraxis.net/191364-shellexecute-problem-mit-zweitem-parameter.html)

himitsu 7. Jan 2017 14:32

AW: ShellExecute Problem mit zweitem Parameter
 
Zitat:

Zitat von HolgerX (Beitrag 1358314)
Ist da zwischen 'JapanTour2012' und '.avi' ein Leerzeichen dazwischen?
Dann ist der Fehler gefunden... ;)

Nein, es ist kein Leerzeichen dazwischen.
Da hat nur das Forum zugeschlagen, welches zu lange "Wörter" trennt, damit ein Zeilenumbruch in die Anzeige rein kann. :zwinker:

HolgerX 7. Jan 2017 15:39

AW: ShellExecute Problem mit zweitem Parameter
 
Zitat:

Zitat von himitsu (Beitrag 1358316)
Zitat:

Zitat von HolgerX (Beitrag 1358314)
Ist da zwischen 'JapanTour2012' und '.avi' ein Leerzeichen dazwischen?
Dann ist der Fehler gefunden... ;)

Nein, es ist kein Leerzeichen dazwischen.
Da hat nur das Forum zugeschlagen, welches zu lange "Wörter" trennt, damit ein Zeilenumbruch in die Anzeige rein kann. :zwinker:


OK, nichts für ungut..

Nur Leerzeichen in Parameter sind ja Trennen für 'verschiedene' Parameter..

Deshalb geht es mit Anführungszeichen, da dann die Leerzeichen ein Teil 'eines' Parameters (eingeschlossen in den ") sind..

markus5766h 7. Jan 2017 19:03

AW: ShellExecute Problem mit zweitem Parameter
 
Ich hab's jetzt generell zwischen Anführungszeichen gesetzt,
löst erst mal das Problem.:)

himitsu 7. Jan 2017 19:14

AW: ShellExecute Problem mit zweitem Parameter
 
Das stimmt und dagegen hab ich auch nichts gesagt. :zwinker:

Nur da hier Mehrere auf dieses eine nichtexistente Leerzeichen eingingen, gedachte ich mal zu erwähnen, daß Dieses hier nur angezeigt wird, aber nicht im Namen vorkommt.
(das erkennt man gut, wenn man den Ursprungspost zitieren will)

markus5766h 7. Jan 2017 19:19

AW: ShellExecute Problem mit zweitem Parameter
 
Zitat:

Zitat von himitsu (Beitrag 1358351)
Das stimmt und dagegen hab ich auch nichts gesagt. :zwinker:

Nur da hier Mehrere auf dieses eine nichtexistente Leerzeichen eingingen, gedachte ich mal zu erwähnen, daß Dieses hier nur angezeigt wird, aber nicht im Namen vorkommt.
(das erkennt man gut, wenn man den Ursprungspost zitieren will)

Ich muss zugeben : hab' meine Ursprungsdatei nun nicht mehr geprüft, da ein Leerzeichen evt. auch in anderen Dateinamen
stecken könnte - daher habe ich es erst mal als Lösung genommen, inzwischen (zwei Stunden später) entferne ich diese
(und evt. andere unliebsame Zeichen) mittels StringReplace.
Ein ... PChar(Chr(34) + Media + Chr(34)) kann allerdings nicht schaden . . .:-D

t.roller 7. Jan 2017 19:43

AW: ShellExecute Problem mit zweitem Parameter
 
Zwei Funktionen zur Auswahl:
Delphi-Quellcode:
function RemoveSpaces(const s: string): string;
var
len, p: integer;
pc: PChar;
const
WhiteSpace = [#0, #9, #10, #13, #32];
begin
len := Length(s);
SetLength(Result, len);
pc := @s[1];
p := 0;
while len > 0 do
begin
if not (pc^ in WhiteSpace) then
begin
inc(p);
Result[p] := pc^;
end;
inc(pc);
dec(len);
end;
SetLength(Result, p);
end;

function DeleteSpaces(Str: string): string;
var i: Integer;
begin
i:=0;
while i<=Length(Str) do
if Str[i]=' ' then Delete(Str, i, 1)
else Inc(i);
Result:=Str;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.text:= RemoveSpaces(Edit1.text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.text:= DeleteSpaces(Edit1.text);
end;

Dalai 7. Jan 2017 19:57

AW: ShellExecute Problem mit zweitem Parameter
 
Zitat:

Zitat von markus5766h (Beitrag 1358352)
Ein ... PChar(Chr(34) + Media + Chr(34)) kann allerdings nicht schaden . . .:-D

Ich biete
Delphi-Quellcode:
PChar(AnsiQuotedStr(Media, '"'))
. Finde ich besser lesbar, weil man nicht überlegen muss, was denn nun Chr(34) ist. Trotz des "Ansi" im Funktionsnamen eignet sich die Funktion für Unicode-Strings, wenn man die aus SysUtils verwendet - siehe Delphi-Referenz durchsuchenAnsiQuotedStr.

Grüße
Dalai

markus5766h 7. Jan 2017 20:06

AW: ShellExecute Problem mit zweitem Parameter
 
Zitat:

Zitat von t.roller (Beitrag 1358354)
Zwei Funktionen zur Auswahl:
...
[/delphi]

Code:
. . .
const
  OldString : Array[1..3] = (Chr(32), Chr(10), Chr(19));
  NewString : String = Chr(95);
var
  i : Byte;
  Destination : String;
. . .
  Destination := [irgendwas];
  for i := 1 to 3 do Destination := ReplaceString(Destination, OldString[i], NewString, [rfReplaceAll, rfIgnoreCase]);
. . .
finde ich persönlich kürzer und auch verständlich


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz