Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi paramstr hat Probleme mit Leerzeichen im Pfad (https://www.delphipraxis.net/5431-paramstr-hat-probleme-mit-leerzeichen-im-pfad.html)

torud 5. Jun 2003 20:52


paramstr hat Probleme mit Leerzeichen im Pfad
 
Hallo User,

ich starte meine Application unter anderem über meine eigene Dateiendung. Alles ist ok. Ich habe aber festgestellt, dass das Programm ein Problem damit hat, wenn ich auf eine eigene Datei doppelt klicke, die sich im Order "Eigene Dateien" befindet. Mein Programm startet öffnet aber die Datei nicht, weil der Dateipfad offensichtlich nach "Eigene" aufhört. Schuld ist wohl das Leerzeichen. Wie kann ich dieses Problem lösen?

In VB und VB-Script macht mans so:
variable = chr(34) & pfad & chr(34)
Man verpackts einfach in Hochkommas, welche für einen String stehen. Und wie mache ich das in Delphi mit TP ?

Danke
Tom

Luckie 5. Jun 2003 20:58

Genauso.

torud 5. Jun 2003 21:00

Jo, Danke!Ich hatte gerade mal noch meine Suche verfeinert und wollte hier noch posten wo ich auch bestätigung fand:

Und hier der Link

Danke Tom

Christian Seehase 5. Jun 2003 22:03

Moin Tom,

Deiner Beschreibung nach dürfte das Problem aber nicht in Deinem Programm liegen, sondern im Command in der Registry.
Der Wert dort müsste so aussehen:

"Pfad zum Programm" "%1"

torud 6. Jun 2003 08:47

Hi Chris,

ich denke Du hast Recht. Ich habe mal in meiner Registry nachgesehen und genau diesen "Fehler" entdeckt. Leider erstelle ich mein Setup mit InnoSetup. Eigentlich bin ich ganz zufrieden damit. Nur Leider kann man dort nicht folgendes machen, um den Fehler, wie von mir beschrieben eben NICHT mehr zu bekommen.

Root: HKCR; Subkey: "CSS-Maker\Shell\Open\Command"; ValueType: string; ValueName: ""; ValueData: "{app}\maker.exe" "%1"

Inno Setup beschwert sich dann leider.
Mal sehen, wie ich dieses Problem lösen kann.

Danke Tom

Luckie 6. Jun 2003 08:52

Lass den Eintrag beim ersten Start deines Porgrammes anlegen. Dann kann man sogar noch eien Abfrage einbauen, ob es überhaupt gewünscht ist.

torud 6. Jun 2003 08:57

Hi Lucki,

die Abfrage wäre kein Problem. Nur finde ich sie eher sinnlos, da ich der Meinung bin, das dieser Eintrag ein "MUSS" ist, dass der User doch hinnehmen muss. Oder sehe ich dass etwas zu verbissen?

Naja und den Eintrag vonm Programm vornemen zu lassen: So weit war ich schon mal und eigentlich war ich nicht unbedingt zufrieden damit, aber ich werdswohl wieder so machen MÜSSEN.

Kann es da eigentlich noch zu Problemen mit NT40-User kommen, die eigentlich keine Administratorenrechte haben? Ich frage nur, weil ich wissen muss ob ich dann in diesem Falle auch schreiben dürfte.!?

Ich werds wohl in eine
Try
Except
finally

packen!?

Danke Tom

Mario 6. Jun 2003 08:57

Die Hilfedatei von InnoSetup ist eigentlich sehr gut:
Zitat:

To embed a double-quote character inside a quoted value, use two consecutive double-quote characters. For example:

"This "" contains "" embedded "" quotes"

The Setup Compiler would see that as:

This " contains " embedded " quotes

If you want the value of a parameter to be a single double-quote character, use four double-quote characters: """". The outer two are needed to surround the string in quotes; the inner two are used to embed a single double-quote character.

torud 6. Jun 2003 09:00

Hi Mario,

ok i´ try this one. sorry, but my english is not so good. i used the helpfile of inno-setup, but i can´t find the comment you told me.

thanx
tom

Mario 6. Jun 2003 09:01

Ich bin in der Hilfe auf Suchen gegangen und habe quoted gesucht.

Luckie 6. Jun 2003 09:01

@torud: Ein normaler Bneutzer hat eh nicht das recht etwas zu installieren. Und die Benutzergruppe, die das darf kann auch in den betreffenden Schlüssel schreiben.

Nachtrag: Inno-Setup muß es ja auch dürfen, sonst klappt es ja sowieso nicht.

torud 6. Jun 2003 09:08

Hallo Ihr Beiden,

also erstmal nochmal Danke für Euren Einsatz!

Hier der Fetzen der mir im Inno-Setup nun das erledigt, was ich brauche:

Root: HKCR; Subkey: "CSS-Maker\Shell\Open\Command"; ValueType: string; ValueName: ""; ValueData: """{app}\maker.exe"" ""%1"""

@Mario: Ich bin in der Hilfe von InnoSetup auf Registry gegangen und habe es verzweifelt mit multisz versucht. Wie gesagt, mein Englisch ist zum fürchten.

@Luckie: Da es ja nun mit dem Inno funzt, hat sich ja das Thema mit dem Registry-Eintrag erledigt. Aber ich hatte früher kein Inno-Setup und habe da alle Einträge vom Programm selbst vornehmen lassen. Allerdings haben sich viele NT-User bei mir gemeldet, weil sie wohl Probleme hatten. Naja ist ja nun nicht mehr wichtig.

Danke Tom

Mario 6. Jun 2003 09:08

Ja, InnoSetup braucht die gleichen Rechte. Aber es ist besser, es gleich beim Setup zu erledigen und vielleicht beim Setup den Hacken Admin-Rechte erforderlich rein zu machen. Dann kann das Setup alles erledigen und die Anwendung hat die Rechte-Problematik nicht mehr.

Christian Seehase 6. Jun 2003 09:25

Moin Tom,

Zitat:

Zitat von torud
Nur finde ich sie eher sinnlos, da ich der Meinung bin, das dieser Eintrag ein "MUSS" ist, dass der User doch hinnehmen muss.

Das seh' ich anders.
Es geht doch nur um den Komfort das Dein Programm startet, wenn jemand auf eine entsprechende Datei einen Doppelklick macht, oder bei Verwendung von ShellExecute.

Wenn nun aber auf einem Rechner schon ein anderes Programm mit dieser Extension verknüpft ist? Willst Du die einfach ungefragt überbügeln?
Da wäre es schon besser nachzusehen, zu melden, womit verknüpft wurde, und dann die Wahl zu lassen.
Das könnte mit Inno und der Scriptsprache eventuell machbar sein.

torud 6. Jun 2003 09:28

Ähm, nochmal kurz denklahme:

Kann man beim Inno-Setup einen solchen
Admin-Rechte-erforderlich-Haken setzen?

Und wenn ja:
Wo denn?

Tom

torud 6. Jun 2003 09:32

Zitat:

Wenn nun aber auf einem Rechner schon ein anderes Programm mit dieser Extension verknüpft ist? Willst Du die einfach ungefragt überbügeln?
Da wäre es schon besser nachzusehen, zu melden, womit verknüpft wurde, und dann die Wahl zu lassen.
Na gut, das ist ein Argument! Daran habe ich ehrlich gesagt noch nicht gedacht. Ist wohl illusorisch zu glauben, dass die selbst kreierte Dateiendung nicht von anderen auch benutzt wird.

Tom

Mario 6. Jun 2003 10:21

Code:
[Setup]
PrivilegesRequired=admin
Ich empfehle Dir aber dringend den Einsatz von IsTool als deutsche Bedien-Oberfläche.

Mario 6. Jun 2003 10:24

Für die bedingte Installation kannst Du Tasks verwenden. Damit kannst Du dem User eine Checkbox anbieten: [i]Dateiendung mit CCS verknüfen[i] und diese als Bedingung für Deine Einträge anlegen.

Ein Beispiel dafür findest Du, wenn Du ein neues Beispielprojekt anlegst. Für das Desktop-Icon wurde es auf diese Weise gelöst.

torud 6. Jun 2003 10:30

Danke nochmal für Deine Tipps.

Du schriebst, dass ich lieber IsTool verwenden solle.

Ist das Freeare?
und wenn ja:
Wo gibts den das?

Danke Tom

Mario 6. Jun 2003 10:36

Schau mal hier:
http://www.jrsoftware.org/is3rdparty.php

Ist Freeware und so gesehen eine IDE für InnoSetup (und in Deutsch).

Daniel B 6. Jun 2003 13:19

Hallo,

werdet Bitte wieder OnT und/oder macht für das Inno-Thema ein neuen Thread auf. Danke.

Grüsse, Daniel :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.

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