Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei öffnen / Dateiname Teil variabel (https://www.delphipraxis.net/174987-datei-oeffnen-dateiname-teil-variabel.html)

jigsawclan 23. Mai 2013 07:21

Datei öffnen / Dateiname Teil variabel
 
Hallo Leute.
Ich bin sowohl in der Programmierung als auch hier im Forum neu.
Habe mich durch Internet ein bisschen eingelesen.

Mein Ziel:
Ich möchte einige Buttons entwerfen mit denen ich unterschiedliche Datein öffnen kann
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
begin
if ShellExecute(Application.Handle,
'open',
PChar('D:\Test\teil1_version1.doc'),
nil, nil, SW_NORMAL) <= 32 then
ShowMessage('Es ist ein Fehler aufgetreten');
end;

soweit so gut.
Jetzt hab ich nur folgendes handycap
der Dateiname "version1" ändert sich ständig (version 1-10)
Damit hätte ich zB.
Teil 1 Version 1
Teil 2 Version 7
Teil 3 Version 9
usw.
Ist es möglich das ich beim Dateinamen nur nach den ersten Buchstaben gehe?
soll heißen das er die Version ignoriert.
zB.
Öffne Teil 1 *
??
Vielen Dank
LG eilovliz

PS hoffe ich habe es geschafft halbwegs so auszudrücken das ihr mich versteht

Bummi 23. Mai 2013 07:28

AW: Datei öffnen / Dateiname Teil variabel
 
Per FindFirst/FindNext mit der passenden Maske eine Liste füllen und aus der Liste die Datei Deiner Wahl öffnen.

jigsawclan 23. Mai 2013 07:34

AW: Datei öffnen / Dateiname Teil variabel
 
ok das muss ich mal probieren. jetzt weiß ich wenigstens nach welcher funktion ich suchen muss. danke.
Zustätzlich noch eine Frage:
Kann ich alle .txt files welche in einem Ordner sind mit einem Button klick öffnen?
egal wieviele es sind auch wenn ich immer welche dazugebe?

baumina 23. Mai 2013 07:37

AW: Datei öffnen / Dateiname Teil variabel
 
Wenn Du sowieso schon in der FindNext-Schleife bist, kannst Du so viele Dateien öffnen bis das Word platzt :lol:

jigsawclan 23. Mai 2013 07:38

AW: Datei öffnen / Dateiname Teil variabel
 
und wenn ich es ohne findnext schleife lösen möchte ist es auch möglich?

baumina 23. Mai 2013 07:40

AW: Datei öffnen / Dateiname Teil variabel
 
ja klar, einfach immer wieder ShellExecute aufrufen.

jigsawclan 23. Mai 2013 07:42

AW: Datei öffnen / Dateiname Teil variabel
 
aber dazu muss ich wissen wie die dateien heissen.
daher müsste ich wenn ich txt files dazuspiele immer wieder das Programm anpassen.

baumina 23. Mai 2013 07:44

AW: Datei öffnen / Dateiname Teil variabel
 
Wie die Dateien in einem Verzeichnis heißen findest Du ja mit FindFirst/FindNext heraus. Oder Du machst einen OpenDialog drumrum, dann kannst die Datei(en) auswählen, die Du öffnen magst.

jigsawclan 23. Mai 2013 07:46

AW: Datei öffnen / Dateiname Teil variabel
 
Da es einige Dateien werden will ich sie mir eigentlich nicht aussuchen sondern einfach nur alle öffnen.
das wäre die optimale zeitersparnis.

baumina 23. Mai 2013 07:49

AW: Datei öffnen / Dateiname Teil variabel
 
Dann kommst Du um FindFirst/FindNext nicht herum.

Sir Rufo 23. Mai 2013 07:53

AW: Datei öffnen / Dateiname Teil variabel
 
Zitat:

Zitat von jigsawclan (Beitrag 1216152)
Da es einige Dateien werden will ich sie mir eigentlich nicht aussuchen sondern einfach nur alle öffnen.
das wäre die optimale zeitersparnis.

Jo, es gibt aber keine
Delphi-Quellcode:
procedure AlleDateienÖffnenDieJigsawclanMeint;
wenn du diese nicht selber schreibst :)

jigsawclan 23. Mai 2013 07:55

AW: Datei öffnen / Dateiname Teil variabel
 
Also einfach nur mit einem buttonklick alle öffnen ist nicht möglich?

Sir Rufo 23. Mai 2013 08:24

AW: Datei öffnen / Dateiname Teil variabel
 
Zitat:

Zitat von jigsawclan (Beitrag 1216158)
Also einfach nur mit einem buttonklick alle öffnen ist nicht möglich?

Doch, warum nicht?

Du musst aber selber programmieren, was bei diesem ominösen ButtonClick passieren soll.

Es gibt aber keinen
Delphi-Quellcode:
JetztMachDasWasIchMirGeradeDenke
Befehl

jigsawclan 23. Mai 2013 08:37

AW: Datei öffnen / Dateiname Teil variabel
 
Das es sowas nicht gibt ist mir schon klar.
nur dadurch das ich gerade anfange ist es schwierig...ich weiß nicht wonach ich suchen soll bzw. ob das was ich machen möchte überhaupt funktioniert

nahpets 23. Mai 2013 08:51

AW: Datei öffnen / Dateiname Teil variabel
 
Welche Version von Delphi hast Du?
Suche in der Hilfe mal nach FindFirst. In der Hilfe von Delphi 7 findest Du dann zu FindFirst ein rechts passables Beispiel, dass Du nur "ein bisserl" anpassen musst.

Delphi-Quellcode:
procedure SuchmirmalDateien(sDaStehtDrinWasIchSuche : String);
var
  sr: TSearchRec;
begin
  if FindFirst(sDaStehtDrinWasIchSuche, FileAttrs, sr) = 0 then begin
    repeat
      if (sr.Attr and faAnyFile) = sr.Attr then begin
        if ShellExecute(Application.Handle,'open',
                        PChar(sr.Name),
                        nil, nil, SW_NORMAL) <= 32 then begin
          ShowMessage('Es ist ein Fehler bei Datei ' + sr.Name + ' aufgetreten');
        end;
      end;
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
end;
Der Aufruf könnte dann in etwa so aussehen:
Delphi-Quellcode:
SuchmirmalDateien('D:\Test\teil1*.doc');
Das ist jetzt nur so "hingedaddelt" und ungetestet.

jigsawclan 23. Mai 2013 08:56

AW: Datei öffnen / Dateiname Teil variabel
 
also ich verwende Delphi 7.
werd das mal probieren und mich in der Hilfe ein wenig einlesen.
Vielleicht komm ich ja zu einem passablen ergebnis.
Danke vorerst mal für die Hilfe

Sir Rufo 23. Mai 2013 08:58

AW: Datei öffnen / Dateiname Teil variabel
 
Zitat:

Zitat von jigsawclan (Beitrag 1216174)
also ich verwende Delphi 7.
werd das mal probieren und mich in der Hilfe ein wenig einlesen.
Vielleicht komm ich ja zu einem passablen ergebnis.
Danke vorerst mal für die Hilfe

Mit den Suchbegriffen

Hier im Forum suchenFindFirst, Hier im Forum suchenFindNext (Forensuche)
Bei Google suchenDelphi FindFirst, Bei Google suchenDelphi FindNext (google)

solltest du eigentlich mit Ergebnissen zuge****en werden :mrgreen:

jigsawclan 23. Mai 2013 18:01

AW: Datei öffnen / Dateiname Teil variabel
 
Ich hab jetzt mal versucht das ganze anders zu lösen nur komm ich mit dem wenigen wissen nicht ganz weiter bzw. bin ein wenig überfordert
Funktion möchte ich die gleiche verwenden.

uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
begin
if ShellExecute(Application.Handle,
'open',
PChar('C:\Test\a99.doc'),
nil, nil, SW_NORMAL) <= 32 then
ShowMessage('Es ist ein Fehler aufgetreten');
end;

nachdem ich jetzt aber nicht in jedem ordner eine a99 doc habe sondern auch mal
b99 oder c99 (nur der erste Buchstabe ändert sicht) dachte ich mir ich wiederhole einfach die komplette funktion ohne Showmessage.

procedure TForm1.Button6Click(Sender: TObject);
begin
if ShellExecute(Application.Handle,
'open',
PChar('C:\Test\a99.txt'),
nil, nil, SW_NORMAL) <= 32 then
shellExecute(Application.Handle,
'open',
PChar('C:\Test\b99.txt'),
nil, nil, SW_NORMAL) <= 32 then
ShellExecute(Application.Handle,
'open',
PChar('C:\Test\c99.txt'),
nil, nil, SW_NORMAL) <= 32 then
ShowMessage('Es ist ein Fehler aufgetreten');
end;
end;
end;
end.

Durch den "gerade eben" Einstieg bin ich nicht so versiert und finde den fehler nicht.
vielleicht könnt ihr mir nochmal helfen :oops:

EDIT: ich wollte eigentlich, dass wenn die erste funktion eine datei mit a99 findet, es diese öffnet und dann
beendet die funktion. Wenn das nicht der fall sein sollte soll das ganze bis z99 weitergehen. irgendeine von a-z gibt es immer.
aber da hab ich ja dann total scheiße gebaut glaub ich

DeddyH 23. Mai 2013 18:28

AW: Datei öffnen / Dateiname Teil variabel
 
Gib doch mal an der Konsole (cmd) ein
Code:
dir C:\test\?99.doc
Sind das die Dateien, die Du haben willst?

jigsawclan 23. Mai 2013 18:32

AW: Datei öffnen / Dateiname Teil variabel
 
ja genau da zeit er mir alle mit 99 an

du meintest eh die windows cmd oder?

DeddyH 23. Mai 2013 18:44

AW: Datei öffnen / Dateiname Teil variabel
 
Ich meinte die Kommandozeile (WIN + R -> cmd).

jigsawclan 23. Mai 2013 18:45

AW: Datei öffnen / Dateiname Teil variabel
 
Also eh die :-D

Ja da werden mir alle meine 99er Datein angezeigt

Aviator 23. Mai 2013 18:49

AW: Datei öffnen / Dateiname Teil variabel
 
Hi,

hab das hier mal schnell erstellt. Vielleicht hilft es dir ja weiter:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  i := 1;
  repeat
    ShowMessage(Chr(i + 64) + '99.doc');
    if ShellExecute(Handle, 'open', PChar(Chr(i + 64) + '99.doc'), nil, nil, SW_SHOWMAXIMIZED) <= 32 then
    Inc(i) else i := 27;
  until i = 27;
end;
PS.: Verwende doch bitte auch beim nächsten Mal die Delphi Tags. Delphi Helm oben in der Mitte beim Schreiben deines Beitrages. Und dann einfach dort den Code reinposten.

DeddyH 23. Mai 2013 18:50

AW: Datei öffnen / Dateiname Teil variabel
 
Und damit hast Du doch das Verzeichnis und die Suchmaske für FindFirst ;)
Delphi-Quellcode:
if FindFirst('C:\Test\?99.doc', faAnyFile, SearchRecVariable) = 0 then
  try
    repeat
      //Irgendwas mit der aktuellen Datei machen
    until FindNext(SearchRecVariable) <> 0;
  finally
    FindClose(SearchRecVariable);
  end;

jigsawclan 23. Mai 2013 18:53

AW: Datei öffnen / Dateiname Teil variabel
 
Ich werde jetzt mal versuchen nachzuvollziehen was das genau ist :-D

Nur wo darf ich den Pfad eintragen?

EDIT: Ok da war jetzt ein Post dazwischen :)
ich werd das mal durchforsten

jigsawclan 23. Mai 2013 18:57

AW: Datei öffnen / Dateiname Teil variabel
 
jetzt macht er aber schon bei der zeile probleme

Delphi-Quellcode:
if FindFirst('C:\Test\?99.doc', faAnyFile, SearchRecVariable) = 0 then

DeddyH 23. Mai 2013 18:58

AW: Datei öffnen / Dateiname Teil variabel
 
Geht es auch etwas genauer?

jigsawclan 23. Mai 2013 19:01

AW: Datei öffnen / Dateiname Teil variabel
 
unten bei error schreibt er

undeclared identifier; SearchRecVariable
formal var parameter must be identical
expression of type string found

DeddyH 23. Mai 2013 19:05

AW: Datei öffnen / Dateiname Teil variabel
 
Das war ja auch nur ein Platzhalter für eine Variable vom Typ TSearchRec, die Du deklarieren musst.

jigsawclan 23. Mai 2013 19:09

AW: Datei öffnen / Dateiname Teil variabel
 
OK :)
Jetzt bin ich an dem Punkt angelangt wo es mir zuviel wird :P

Biete eine Kiste Bier ;) ;)

Sir Rufo 23. Mai 2013 19:10

AW: Datei öffnen / Dateiname Teil variabel
 
Zitat:

Zitat von jigsawclan (Beitrag 1216249)
OK :)
Jetzt bin ich an dem Punkt angelangt wo es mir zuviel wird :P

Biete eine Kiste Bier ;) ;)

Eine Variable deklarieren ist zuviel? :shock:

Bist du dir sicher, dass du programmieren willst?

jigsawclan 23. Mai 2013 19:13

AW: Datei öffnen / Dateiname Teil variabel
 
Zitat:

Zitat von Sir Rufo (Beitrag 1216250)
Zitat:

Zitat von jigsawclan (Beitrag 1216249)
OK :)
Jetzt bin ich an dem Punkt angelangt wo es mir zuviel wird :P

Biete eine Kiste Bier ;) ;)

Eine Variable deklarieren ist zuviel? :shock:

Bist du dir sicher, dass du programmieren willst?

Muss ich darauf Antworten? :roll:

Sir Rufo 23. Mai 2013 19:34

AW: Datei öffnen / Dateiname Teil variabel
 
Delphi-Quellcode:
program DateienSuchen;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

type
  TDynStringArray = array of string;

function GetFileArray( const ASearchStr : string ) : TDynStringArray;
var
  LFileCount : Integer;
  LPath :     string;
  LSearchRec : TSearchRec;
begin
  LFileCount := 0;
  SetLength( Result, 10 );

  LPath := ExtractFilePath( ASearchStr );

  if FindFirst( ASearchStr, faAnyFile, LSearchRec ) = 0
  then
    try
      repeat

        if LSearchRec.Attr and faDirectory = faDirectory
        then
          Continue;

        if LFileCount > High( Result )
        then
          SetLength( Result, LFileCount + 10 );

        Result[LFileCount] := LPath + LSearchRec.Name;

        Inc( LFileCount );

      until FindNext( LSearchRec ) <> 0;

      SetLength( Result, LFileCount );
    finally
      FindClose( LSearchRec );
    end;
end;

procedure Test;
var
  LFiles : TDynStringArray;
  LIdx :  Integer;
begin
  LFiles := GetFileArray( 'C:\*.*' );

  for LIdx := Low( LFiles ) to High( LFiles ) do
    WriteLn( LFiles[LIdx] );
end;

begin
  try

    Test;

  except
    on E : Exception do
      WriteLn( E.ClassName, ': ', E.Message );
  end;

  ReadLn;

end.

jigsawclan 23. Mai 2013 19:42

AW: Datei öffnen / Dateiname Teil variabel
 
Danke. Ich werde mir das morgen mal alles durchschauen.
Wie gesagt bin ich ein wenig mit der Gesamtsituation überfordert :-D

Und jetzt noch der lange code :lol: muss das erst mal nachvollziehen was das ganze überhaupt macht


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz