Autor Beitrag
bf109g.01
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Fr 31.10.08 14:17 
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

ausblenden volle Höhe 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;
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 31.10.08 14:23 
Wieso so umständlich?
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 04.11.08 14:46 
habe eine Lösung gefunden, mit der der Spaß einwandfrei läuft:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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.

ausblenden 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. an. Da ist für Einsteiger immer hervorragend ;)

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)