Entwickler-Ecke

Dateizugriff - shellexecute über variable festlegen


bf109g.01 - Fr 31.10.08 14:17
Titel: shellexecute über variable festlegen
Hallo, ich wollte die ShellExecute-Funktion für eine vorher nicht festgelegte DAtei anwenden:
- OpenDialog ausführen
- den Pfad speichern ('C:\...\datei.???')
- den Pfad in Register und Datei teilen (1. 'C:\...\' | 2. ''datei.???')
- die zwei Variablen mit REgister und Dateinamne in die ShellExecute einfügen


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:
{ ---Öffnen einer beliebigen externen Datei---}

procedure TF.BloadClick(Sender: TObject);
var i,j,k,pos:integer;
begin
// Festlegen des Verzeichnisses in einer Variable
  if OD1.Execute then benutzerpfad:=(OD1.FileName);
  showmessage('Pfad: "'+benutzerpfad+'"'); //Kontrolle

{ ---Teilen des Verzeichnispfades in Verzeichnis & Dateiname---}

// Position des letzten '\' im Pfad finden (Rest = Dateiname)
  for i:=1 to length(benutzerpfad) do
    if benutzerpfad[i]= '\' then pos:=i;
// Festlegen des Verzeichnisses in Variable
  for j:=1 to pos do
    pfad:= pfad+benutzerpfad[j];
  showmessage('Verzeichnis: "'+pfad+'"'); //Kontrolle
// Festlegen des Dateinamens in Variable
  for k:=pos+1 to length(benutzerpfad) do
    filename:= filename+benutzerpfad[k];
  showmessage('Dateiname: "'+filename+'"'); //Kontrolle
end;

{ ---Öffnen der Benutzerdefinierten Datei--- }

procedure TF.Bgo2Click(Sender: TObject);
var anzahl, i: integer;
begin
  shellexecute(handle, 'open', filename, PChar(pfad),nil,sw_show); // ^^Befehl zum Öffnen.
end;


Delete - Fr 31.10.08 14:23

Wieso so umständlich?

Delphi-Quelltext
1:
2:
3:
4:
function ExecuteFile(const sFilename: string; dwShow: DWORD = SW_SHOW): DWORD;
begin
  Result := ShellExecute(0,'open',PChar(sFilename),nil,PChar(ExtractFilePath(sFilename)),dwShow);
end;


Ohne Gewähr, aus dem Kopf getippt.


bf109g.01 - Di 04.11.08 14:46

habe eine Lösung gefunden, mit der der Spaß einwandfrei läuft:

Delphi-Quelltext
1:
shellexecute(handle, 'open', PCHAR(filename), PChar(pfad),nil,sw_show); // ^^Befehl zum Öffnen.                    

Wenn ich den String in die Klammer baue geht es.

@ DeddyH:

Danke für die Anmerkung, sieht sehr passabel aus, bin aber leider nicht soweit versiert, dass ich mit functions umgehen kann. Keine Ahnung, wie ich damit arbeiten soll/die Dinger ausführen kann. :)


Hidden - Di 04.11.08 18:00

Hi,

In gewisser Hinsicht ist eine Funktion wie eine Procedure - eben beides Methoden. Nun hat eine Funktion einen Rückgabewert("result"). Du kannst sie genau wie eine Variable bei Rechungen verwenden.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function Add(a, b: Integer);
begin
  result := a + b;
end;

{..}
procedure DoSomething;
var
  Fruechte: Integer;
const
  Aepfel = 12;
  Birnen = 13;
begin
  Fruechte := Add(Aepfel, Birnen);
  Fruechte := Aepfel + Birnen;  //dasselbe
end;


Am besten ist es wohl, du siehst dir einmal den Crashkurs von Christian S. [http://www.christian-stelzmann.de/artikel/CrashkursReloaded/] an. Da ist für Einsteiger immer hervorragend ;)

mfG,