Entwickler-Ecke

Dateizugriff - Parameterübergabe


chris_davidi - Mi 03.09.03 10:07
Titel: Parameterübergabe
Hi..

Ich habe folgendes Problem.

Ich will das beim Start meiner Anwendung eine MessageBox aufgerufen wird (oder eine Form, welche selber kreiert wurde, ganz egal). Dies ist ja ganz einfach. Dort soll aber eine bestimmte Parameterreihenfolge eingegeben werden. Die Eingabe wäre zum Beispiel jjKWww. Dies soll dann übergeben werden in folgende Prozedur.


Delphi-Quelltext
1:
if not FileExists('jjKWww') then                    


Hoffe ihr versteht das Problem. Kann mir jemand helfen? Wäre sehr nett.

Danke im Vorraus.
Chris

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


Delete - Mi 03.09.03 11:04

ehrlich gesagt, verstehe ich das Problem nicht...

Kannst du es mal genauer beschreiben??


chris_davidi - Mi 03.09.03 11:12

Ok...

Ich habe mir nun eben eine Form gemacht. Es hat ein Edit Feld und einen Button.

In das Edit Feld gebe ich zum Beispiel jjKWww (<- EINGABE) ein. Nun will ich, dass jjKWww als Parameter übergeben wird in folgende Prozedur. Also in den Code wo ich gepostet habe.


Delphi-Quelltext
1:
if not FileExists('jjKWww <- EINGABE') then                    


Sprich, immer wenn ich das Programm aufrufe und was eingebe, soll der Wert übergeben werden.

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


Tino - Mi 03.09.03 11:24

Hallo!


Delphi-Quelltext
1:
If not FileExists (Edit1.Text) Then                    


Gruß
Tino


chris_davidi - Mi 03.09.03 11:51

Okay Danke, klappt.

Nun wirft sich aber ein anderes Problem auf.


Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption:='NDC Health - ' + GetCurrentDir;
  ZipMaster1.ZipFileName:='C:\Eigene Dateien\NDC- Transfer\DATEINAME.zip';
  ZipMaster1.Load_Zip_Dll;
end;


Ich will den Text, welcher in das Edit eingegeben wurde verwenden, um die Datei abzuspeichern. Also Text wird eingegeben, Datei wird gezippt und soll unter dem Name, welcher in Edit1 steht abgespeichert werden.

Also die Zeile ist wichtig:

Quelltext
1:
ZipMaster1.ZipFileName:='C:\Eigene Dateien\NDC- Transfer\DATEINAME.zip';                    


Das ich darin den Wert, bzw. Text einfügen kann, welcher Edit1 hat, so dass dann die Datei diesen Namen erhält.

Weiß jemand wie das geht, weil wenn ich statts DATEINAME einfach Edit1.Text eingeben heißt die Datei am Ende "Edit1.Text.zip".


Delete - Mi 03.09.03 11:57

versuchs mal so:


Delphi-Quelltext
1:
ZipMaster1.ZipFileName:='C:\Eigene Dateien\NDC- Transfer\' + edit1.text + '.zip';                    


chris_davidi - Mi 03.09.03 12:00

Habe ich probiert, sieht von der Logik besser aus. Aber die Datei hat nun gar keinen Dateinamen. Habe mal die + weggelassen oder versetzt, bringt aber keinen Unterschied. An was kann das liegen?


chris_davidi - Mi 03.09.03 13:02

Wenn ich in den Objektmanager bei Edit1 unter Text etwas eingebe, hat es den Dateinamen. Wenn ich es jedoch leer lasse und es auslesen lass mit dem von DaBass hat die Datei keinen Dateinamen, nur eine Endung


Delphi-Quelltext
1:
ZipMaster1.ZipFileName:='C:\Eigene Dateien\NDC- Transfer\' + edit1.text + '.zip';                    


Weiß jemand Rat?


Delete - Mi 03.09.03 13:18

dann musst du zuerst das feld noch überprüfen:


Delphi-Quelltext
1:
if not edit1.text = '' then ZipMaster1.ZipFileName:='C:\Eigene Dateien\NDC- Transfer\' + edit1.text + '.zip';                    


so sollte auch dieses Probleem gelöst sein!


chris_davidi - Mi 03.09.03 13:22

Geht nicht, "Operator ist auf diesen Operandentyp nicht anwendbar".


Delete - Mi 03.09.03 13:25

dann versuche es so:


Delphi-Quelltext
1:
if edit1.text <> '' then ZipMaster1.ZipFileName:='C:\Eigene Dateien\NDC- Transfer\' + edit1.text + '.zip';                    


chris_davidi - Mi 03.09.03 13:50

Es läuft zwar, aber es macht keinen Unterschied. Bringt ebenfalls kein Ergebnis.

Hier mal mein Code, bei dem ich den Effekt haben möchte. Nur eben will ich, dass der Dateinamen der ZIP- Datei den Wert von Edit.text hat, welcher ich in der Edit eingebe.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ZipMstr,
  Buttons, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    button_: TSpeedButton;
    ZipMaster1: TZipMaster;
    title: TLabel;
    help_button: TSpeedButton;
    exit_button: TSpeedButton;
    kw_day: TEdit;
    parameter: TLabel;
    kw_year: TEdit;
    kw: TLabel;
    Label1: TLabel;
    edit1: TEdit;
    procedure button_Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure exit_buttonClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption:='NDC Health - ' + GetCurrentDir; // Titel der Form enthält Pfad zum Verzeichniss der Anwendung
  ZipMaster1.ZipFileName:='C:\Eigene Dateien\NDC- Transfer\' + edit1.text + '.zip'; // Pfad & Format der Enddatei (Dateiname = Wert von Eingabefeld)
  ZipMaster1.Load_Zip_Dll; // benötigte DLL- Datei wird geladen (ZipDll.dll)
end;

procedure TForm1.button_Click(Sender: TObject);
begin
   if not FileExists('C:\Eigene Dateien\NDC- Transfer\intra.txt') then  // Überprüfung ob Datei exisitert
   begin
      ShowMessage('Fehler - Datei intra.txt nicht gefunden! Übertragung vom Host auf PC muss fehlerhaft gewesen sein!'); // wenn Datei nicht existiert, dann...
      Exit; // ... Ende
   end;
   ZipMaster1.FSpecArgs.Add('C:\Eigene Dateien\NDC- Transfer\intra.txt'); // Pfad & Format der Datei, welche in das Archiv hinzugefügt wird
   ZipMaster1.Add; // Hauptteil der Hinzufügung zum Archiv
   ShowMessage('Wenn der Wert hinter dem =- Zeichen 1 ist, dann ist alles gut gelaufen. = ' + IntToStr(ZipMaster1.SuccessCnt)); // Erfolgsmeldung
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 ZipMaster1.Unload_Zip_Dll; // benötigte DLL- Datei wird entladen (ZipDll.dll)
end;

procedure TForm1.exit_buttonClick(Sender: TObject);
begin
 Form1.Close; // Form1 schließen
end;

end.
[/code]


Delete - Mi 03.09.03 13:59

ich sehe wo der Fehler steckt.

Du fragst die edit1.Text schon beim FormCreate ab. Jedoch wird dann die Form erst erstellt.... und du kannst noch gar nichts rein schreiben. und wenn schon was darin stehen würde, dann würde immer das gleiche angezeigt, da die Form nur einmal erstellt wird!

Nimm die Zeile, in der du dem Ziparchiv den Namen erteilst doch auch in die ButtonClick Funktion.... :)

Dann sollte alles Funktionieren.

verstanden??


chris_davidi - Mi 03.09.03 14:02

Danke dir. :) Hat klasse geklappt, danke auch für die Erklärung. Denke ich wäre selbst in 50 Jahren nicht drauf gekommen. ;) Läuft nun klasse, danke für deine/eure Hilfe. :)