Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi paramstr(1) geht nicht (https://www.delphipraxis.net/7675-paramstr-1-geht-nicht.html)

TheMiller 18. Aug 2003 21:08


paramstr(1) geht nicht
 
Hey Leute.

Habe ein etwas umfanreicheres Programm. Nun möchte ich, dass die ini aus dem Ordner geholt wird, indem auch das Programm läuft. Dazu habe ich folgendes gemacht:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var ini:TInifile;
begin
ini:=TInifile.Create(paramstr(1)+'Settings.ini');
try
[Anweisungen aus Ini]
finally
ini.free;
end;
end;
Dies funktioniert NICHT. Dann habe ich gleich zum Programmstart folgendes eingegeben:

Delphi-Quellcode:
ShowMessage(paramstr(1));
Es kommt eine Meldung mit einem leeren Fenster. Was ist da los. Vorher gings doch auch...

Bitte helft mir

Marco Haffner 18. Aug 2003 21:10

Re: paramstr(1) geht nicht
 
Du meinst wohl ParamStr(0).
ParamStr(1) liefert den ersten Programm-Parameter, wenn Du die Datei direkt im Explorer öffnest, kann er nichts enthalten.

TheMiller 18. Aug 2003 21:15

Re: paramstr(1) geht nicht
 
wenn ich paramstr(0) einsetze, dann kommt die Meldung mit dem Programmpfad + dem aktuell geööfnetem Namen BSP:

C:\Pfad1\Programm.exe

Wenn ich paramstr(0) einsetzen würde wäre dies das Ergebnis:

Delphi-Quellcode:
ini:=TInifile.Create(paramstr(0)+'Settings.ini');
Er kann die Datei (C:\Pfad1\Programm.exeSettings.ini) nicht öffnen...

Marco Haffner 18. Aug 2003 21:18

Re: paramstr(1) geht nicht
 
Delphi-Quellcode:
Ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));

Stanlay Hanks 18. Aug 2003 21:18

Re: paramstr(1) geht nicht
 
Du musst ExtractFilePath(ParamStr(0)) nehmen.

Man liest sich, Stanlay :hi:

TheMiller 18. Aug 2003 21:40

Re: paramstr(1) geht nicht
 
Nein, geht trotzdem nicht. :twisted:

sakura 18. Aug 2003 21:43

Re: paramstr(1) geht nicht
 
Zitat:

Zitat von DJ-SPM
Nein, geht trotzdem nicht. :twisted:

Das ist keine hilfreiche Aussage :roll: Was für eine Fehlermeldung bekommst Du, was läuft falsch... ?

...:cat:...

TheMiller 18. Aug 2003 21:45

Re: paramstr(1) geht nicht
 
Ganz genau das selbe, wie ich es oben beschrieben habe

wenn ich paramstr(0) einsetze, dann kommt die Meldung mit dem Programmpfad + dem aktuell geöfnetem Namen BSP:

C:\Pfad1\Programm.exe


Er kann die Datei (C:\Pfad1\Programm.exeSettings.ini) nicht öffnen...


Momentan sieht's so aus

Delphi-Quellcode:
ar ini:TInifile;
    top:String;
begin
Showmessage(paramstr(0));
ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)+'settings.ini'));

RomanK 18. Aug 2003 21:49

Re: paramstr(1) geht nicht
 
Hoi,
Delphi-Quellcode:
ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'settings.ini');
ich weis nicht ob du noch ein "\" nach dem ExtractFilePath setzten musst. Dann würde das Ganze so aussehen:
Delphi-Quellcode:
ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'\settings.ini');

Marco Haffner 18. Aug 2003 21:49

Re: paramstr(1) geht nicht
 
Dann mach mal das hier daraus:
Delphi-Quellcode:
ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'settings.ini');
Du hast den Pfad von ParamStr(0)+'settings.ini' extrahiert.

sakura 18. Aug 2003 21:50

Re: paramstr(1) geht nicht
 
Zitat:

Zitat von DJ-SPM
Momentan sieht's so aus

Das hilft wirklich ;-)

Code:
var ini:TInifile;
    top:String;
begin
  Showmessage(paramstr(0));
  ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)[color=#ff0000])[/color] + 'settings.ini'[color=#c0c0c0][s])[/s][/color]);
...:cat:...

TheMiller 18. Aug 2003 21:52

Re: paramstr(1) geht nicht
 
Genau wieder der selbe Fehler.

Aber mal logisch gedacht.. Wenn ich in den Progammstart eines Programms
Delphi-Quellcode:
ShowMessage(paramstr(1));
eingebe, dann gibt er mir IMMER den Pfad zurück, in dem das zu entwickelnde Programm ist.

Warum gibt er mir in meinem Pogramm (nur in diesem) eine leere Messagebox wieder?? Da muss was dran faul sein...

sakura 18. Aug 2003 21:54

Re: paramstr(1) geht nicht
 
Das kann nicht sein, da der Programmpfad IMMER im Eintrag NULL steht.
Delphi-Quellcode:
ShowMessage(ExtractFilePath(ParamStr(0)));
...:cat:...

Marco Haffner 18. Aug 2003 21:56

Re: paramstr(1) geht nicht
 
Sieh Dir auch dazu mal die OH zu ParamStr an.

TheMiller 18. Aug 2003 21:56

Re: paramstr(1) geht nicht
 
@sakura: Ich möchte dir nicht zu Nahe treten, aber nach deiner Lösung sieht der Compiler so aus:
Delphi-Quellcode:
[Hinweis] Unit1.pas(155): Auf 'ExWindows' zugewiesener Wert wird niemals benutzt
[Hinweis] Unit1.pas(306): Auf 'ini' zugewiesener Wert wird niemals benutzt
[Hinweis] Unit1.pas(304): Variable 'top' wurde deklariert, aber in 'TForm1.FormCreate' nicht verwendet
[Fehler] Unit1.pas(306): 'END' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(307): ';' erwartet, aber 'TRY' gefunden
[Fehler] Unit1.pas(358): '.' erwartet, aber ';' gefunden
[Warnung] Unit1.pas(359): Text hinter dem abschließenden 'END.' wird vom Compiler ignoriert
[Fehler] Unit1.pas(78): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button1Click'
[Fehler] Unit1.pas(79): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button2Click'
[Fehler] Unit1.pas(80): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button3Click'
[Fehler] Unit1.pas(81): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button4Click'
[Fehler] Unit1.pas(82): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button5Click'
[Fehler] Unit1.pas(83): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button6Click'
[Fehler] Unit1.pas(84): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button7Click'
[Fehler] Unit1.pas(85): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button8Click'
[Fehler] Unit1.pas(86): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button9Click'
[Fehler] Unit1.pas(87): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button10Click'
[Fehler] Unit1.pas(88): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button11Click'
[Fehler] Unit1.pas(89): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button12Click'
[Fehler] Unit1.pas(90): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button13Click'
[Fehler] Unit1.pas(91): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button14Click'
[Fehler] Unit1.pas(92): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button15Click'
[Fehler] Unit1.pas(93): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button16Click'
[Fehler] Unit1.pas(94): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button17Click'
[Fehler] Unit1.pas(95): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button18Click'
[Fehler] Unit1.pas(96): Ungenügende Forward- oder External-Deklaration: 'TForm1.Systemsteuerung1Click'
[Fehler] Unit1.pas(97): Ungenügende Forward- oder External-Deklaration: 'TForm1.Defragmentieren1Click'
[Fehler] Unit1.pas(98): Ungenügende Forward- oder External-Deklaration: 'TForm1.Abmelden1Click'
[Fehler] Unit1.pas(99): Ungenügende Forward- oder External-Deklaration: 'TForm1.MSDOSEingabeaufforderung1Click'
[Fehler] Unit1.pas(100): Ungenügende Forward- oder External-Deklaration: 'TForm1.Registrierungseditorregeditffnen1Click'
[Fehler] Unit1.pas(101): Ungenügende Forward- oder External-Deklaration: 'TForm1.askmanager1Click'
[Fehler] Unit1.pas(102): Ungenügende Forward- oder External-Deklaration: 'TForm1.ServiceDienste1Click'
[Fehler] Unit1.pas(103): Ungenügende Forward- oder External-Deklaration: 'TForm1.DateienundOrdnersichern1Click'
[Fehler] Unit1.pas(104): Ungenügende Forward- oder External-Deklaration: 'TForm1.AlwaysonTop1Click'
[Fehler] Unit1.pas(105): Ungenügende Forward- oder External-Deklaration: 'TForm1.N800x60060Herz1Click'
[Fehler] Unit1.pas(106): Ungenügende Forward- oder External-Deklaration: 'TForm1.N800x60070Herz1Click'
[Fehler] Unit1.pas(107): Ungenügende Forward- oder External-Deklaration: 'TForm1.N1024x76860Herz1Click'
[Fehler] Unit1.pas(108): Ungenügende Forward- oder External-Deklaration: 'TForm1.N1024x76870Herz1Click'
[Fehler] Unit1.pas(109): Ungenügende Forward- oder External-Deklaration: 'TForm1.N1152x86460Herz1Click'
[Fehler] Unit1.pas(110): Ungenügende Forward- oder External-Deklaration: 'TForm1.N1152x86470Herz1Click'
[Fehler] Unit1.pas(111): Ungenügende Forward- oder External-Deklaration: 'TForm1.Gertemanager1Click'
[Fehler] Unit1.pas(112): Ungenügende Forward- oder External-Deklaration: 'TForm1.Soundcontrol1Click'
[Fehler] Unit1.pas(113): Ungenügende Forward- oder External-Deklaration: 'TForm1.Timer1Timer'
[Fehler] Unit1.pas(114): Ungenügende Forward- oder External-Deklaration: 'TForm1.Hintergrundbild1Click'
[Fehler] Unit1.pas(115): Ungenügende Forward- oder External-Deklaration: 'TForm1.PasswortfrSystemsperre1Click'
[Fehler] Unit1.pas(116): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button19Click'
[Fehler] Unit1.pas(119): Ungenügende Forward- oder External-Deklaration: 'TForm1.ApplicationEvents1Deactivate'
[Fehler] Unit1.pas(120): Ungenügende Forward- oder External-Deklaration: 'TForm1.ApplicationEvents1Activate'
[Fehler] Unit1.pas(121): Ungenügende Forward- oder External-Deklaration: 'TForm1.FormClick'
[Fehler] Unit1.pas(122): Ungenügende Forward- oder External-Deklaration: 'TForm1.Image1Click'
[Fehler] Unit1.pas(123): Ungenügende Forward- oder External-Deklaration: 'TForm1.FormCloseQuery'
[Fehler] Unit1.pas(124): Ungenügende Forward- oder External-Deklaration: 'TForm1.Timer2Timer'
[Fehler] Unit1.pas(125): Ungenügende Forward- oder External-Deklaration: 'TForm1.Papierkorbleeren1Click'
[Fehler] Unit1.pas(126): Ungenügende Forward- oder External-Deklaration: 'TForm1.Windowbeenden1Click'
[Fehler] Unit1.pas(127): Ungenügende Forward- oder External-Deklaration: 'TForm1.Windowsneubooten1Click'
[Hinweis] Unit1.pas(129): Das private-Symbol 'FCanClose' wurde deklariert, aber nie verwendet
[Fehler] Unit1.pas(130): Ungenügende Forward- oder External-Deklaration: 'TForm1.WMWindowPosChanging'
[Fataler Fehler] bar.dpr(7): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Was nun?

Chewie 18. Aug 2003 22:00

Re: paramstr(1) geht nicht
 
Diese Fehlermeldungen stammen aber bestimmt nicht aus sakuras Code. Dafür ist er viel zu kurz :wink:

TheMiller 18. Aug 2003 22:01

Re: paramstr(1) geht nicht
 
Ja ne is klar. Es sollte nur meine Verzweiflung ausdrücken... Was soll ich machen???

sakura 18. Aug 2003 22:02

Re: paramstr(1) geht nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
:roll: Ich weiss ja nicht, was Du gemacht hast, aber ein einfaches Copy&Paste funktioniert bei mir einwandfrei

Demo im Anhang.

...:cat:...

Daniel B 18. Aug 2003 22:02

Re: paramstr(1) geht nicht
 
Die Prozedur posten, Du hast irgendwo ein zeichen vergessen

woki 18. Aug 2003 22:04

Re: paramstr(1) geht nicht
 
Code:
[Fehler] Unit1.pas(306): 'END' erwartet, aber ')' gefunden
Sakuras Klammersetzung war schon richtig, du mußt aber ncht nur die fehlende Klammer ergänzen,sondern auch die Überflüssige am ende der zeile entfernen.

Woki

TheMiller 18. Aug 2003 22:10

Re: paramstr(1) geht nicht
 
Ok,

wie kann ich das jetzt Beschreiben? IHR SEID DIE BESTEN

Es funzt jetzt genau das, was ich ohne euch net hinbekommen habe...

Bei Gelegenheit verleiehe ich euch nochmal einen Orden...

*sichgedankenmach(alles wegen einer Klammer)*

BIGTHX

sakura 18. Aug 2003 22:13

Re: paramstr(1) geht nicht
 
Es gibt einen Orden :mrgreen:

:dp:


...:cat:...

Christian Seehase 18. Aug 2003 22:15

Re: paramstr(1) geht nicht
 
Moin sakura,

ist zwar massiv OT aber:

Der "Orden" ist klasse :D
Jedesmal wenn ich den stelle ich mir den als Anstecknadel vor ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 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