![]() |
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 |
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.
|
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? |
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:
|
AW: Datei öffnen / Dateiname Teil variabel
und wenn ich es ohne findnext schleife lösen möchte ist es auch möglich?
|
AW: Datei öffnen / Dateiname Teil variabel
ja klar, einfach immer wieder ShellExecute aufrufen.
|
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. |
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.
|
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. |
AW: Datei öffnen / Dateiname Teil variabel
Dann kommst Du um FindFirst/FindNext nicht herum.
|
AW: Datei öffnen / Dateiname Teil variabel
Zitat:
Delphi-Quellcode:
wenn du diese nicht selber schreibst :)
procedure AlleDateienÖffnenDieJigsawclanMeint;
|
AW: Datei öffnen / Dateiname Teil variabel
Also einfach nur mit einem buttonklick alle öffnen ist nicht möglich?
|
AW: Datei öffnen / Dateiname Teil variabel
Zitat:
Du musst aber selber programmieren, was bei diesem ominösen ButtonClick passieren soll. Es gibt aber keinen
Delphi-Quellcode:
Befehl
JetztMachDasWasIchMirGeradeDenke
|
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 |
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:
Der Aufruf könnte dann in etwa so aussehen:
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;
Delphi-Quellcode:
Das ist jetzt nur so "hingedaddelt" und ungetestet.
SuchmirmalDateien('D:\Test\teil1*.doc');
|
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 |
AW: Datei öffnen / Dateiname Teil variabel
Zitat:
![]() ![]() ![]() ![]() solltest du eigentlich mit Ergebnissen zuge****en werden :mrgreen: |
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 |
AW: Datei öffnen / Dateiname Teil variabel
Gib doch mal an der Konsole (cmd) ein
Code:
Sind das die Dateien, die Du haben willst?
dir C:\test\?99.doc
|
AW: Datei öffnen / Dateiname Teil variabel
ja genau da zeit er mir alle mit 99 an
du meintest eh die windows cmd oder? |
AW: Datei öffnen / Dateiname Teil variabel
Ich meinte die Kommandozeile (WIN + R -> cmd).
|
AW: Datei öffnen / Dateiname Teil variabel
Also eh die :-D
Ja da werden mir alle meine 99er Datein angezeigt |
AW: Datei öffnen / Dateiname Teil variabel
Hi,
hab das hier mal schnell erstellt. Vielleicht hilft es dir ja weiter:
Delphi-Quellcode:
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.
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; |
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; |
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 |
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
|
AW: Datei öffnen / Dateiname Teil variabel
Geht es auch etwas genauer?
|
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 |
AW: Datei öffnen / Dateiname Teil variabel
Das war ja auch nur ein Platzhalter für eine Variable vom Typ TSearchRec, die Du deklarieren musst.
|
AW: Datei öffnen / Dateiname Teil variabel
OK :)
Jetzt bin ich an dem Punkt angelangt wo es mir zuviel wird :P Biete eine Kiste Bier ;) ;) |
AW: Datei öffnen / Dateiname Teil variabel
Zitat:
Bist du dir sicher, dass du programmieren willst? |
AW: Datei öffnen / Dateiname Teil variabel
Zitat:
|
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. |
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 23:39 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