Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Verzeichnisstruktur (https://www.delphipraxis.net/162552-verzeichnisstruktur.html)

medirar 29. Aug 2011 09:44

Verzeichnisstruktur
 
Hallo Liebe Forenmitglieder. Ich habe ein riesiges Problem ich hoffe ihr könnt mir weiter helfen.

Ich sammle Leidenschaftlich gerne Briefmarken. Ich scanne diese ein und lege diese unter einem „mir logischen Pfad ab“. Das Problem ist : Wenn ich mal eben schnell ein Scan öffnen möchte, dauert das ewig bis ich bei der Datei angekommen bin.

In Delphi habe ich eine VCL mit Textbox. Ich möchte gerne das wenn man die Datei Nummer eingibt Automatisch sich der Scan mit Irfan View öffnet ist das möglich?


G:\PICS\9\R\22\3

9R223000L5.jpg
oder 9R223000L5-55.jpg


Gibt es eine logische Programmierung. Meine Logik reicht dafür nicht aus!:shock:

Ich danke euch für eure Hilfe

DeddyH 29. Aug 2011 09:46

AW: Verzeichnisstruktur
 
Was ist denn die Dateinummer?

s.h.a.r.k 29. Aug 2011 09:55

AW: Verzeichnisstruktur
 
Ich denke er meint den Dateinamen?!

Das Problem für uns ist hier, dass wir deine Logik näher erklärt haben müssten, um dir konkret helfen zu können. Beschreibe doch einfach mal ein Beispiel.

Andreas L. 29. Aug 2011 11:53

AW: Verzeichnisstruktur
 
Zitat:

G:\PICS\9\R\22\3

9R223000L5.jpg
Sind die Namen der Ordner wie 9 oder R oder 22 immer gleich lang? Wenn ja, kannst du deine eingegebene Nummer einfach mit Delphi-Referenz durchsuchenCopy, Delphi-Referenz durchsuchenPos und evtl. Delphi-Referenz durchsuchenPosEx zerlegen.

Delphi-Quellcode:
var
  tmp: String;
  input: String;
  path: String;
begin
  path := 'G:\PICS\';
  input := Edit1.Text;

  // 1. Zeichen ermitteln
  tmp := Copy(input, 1, 1);

  path := path + tmp + '\';
  // path ist jetzt G:\PICS\9\

  // und so weiter bis du den vollständigen Pfad + Dateinamen hast
  // Öffnen kannst du die Datei dann mit ShellExecute
end;

medirar 29. Aug 2011 12:05

AW: Verzeichnisstruktur
 
WOW, ich muss das mal heute abend ausprobieren! Vielen herzlichen Dank! :-D
:shock:

s.h.a.r.k 29. Aug 2011 12:05

AW: Verzeichnisstruktur
 
Auf sowas würde ich reguläre Ausdrücke los lassen. Auf ein paar Millisekunden hin oder her kommt es hier ja eh nicht darauf an.

medirar 29. Aug 2011 12:06

AW: Verzeichnisstruktur
 
Ja die sind immer gleichlang!

DeddyH 29. Aug 2011 12:10

AW: Verzeichnisstruktur
 
Ich habe den Zusammenhang immer noch nicht verstanden :gruebel:. Soll da ein Dateiname eingegeben und daraus der Pfad ermittelt werden oder andersherum oder wie?

medirar 29. Aug 2011 12:11

AW: Verzeichnisstruktur
 
Ja, Der Dateiname wird eingegeben ....zerlegt....und die Datei öffnet sich.....:shock:

DeddyH 29. Aug 2011 12:14

AW: Verzeichnisstruktur
 
Dann ginge ja auch Insert(), man muss nur daran denken, dass sich danach der Index jeweils um 1 verschiebt.

[edit] Passt das so?
Delphi-Quellcode:
function GetDirFromFilename(Filename, IncludingDir: string;
  BackslashPositions: array of integer): string;
var
  i, RealPosition: integer;
begin
  RealPosition := 0;
  for i := Low(BackslashPositions) to High(BackslashPositions) do
    begin
      Insert('\', Filename, BackslashPositions[i] + RealPosition);
      inc(RealPosition);
    end;
  Result := IncludeTrailingPathDelimiter(IncludingDir) + Filename;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetDirFromFilename('9R223000L5.jpg', 'G:\PICS', [2,3,5,6]))
end;
[/edit]

medirar 29. Aug 2011 12:17

AW: Verzeichnisstruktur
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wie meinst Du das? Ich kenne das nicht:shock:

Ich habe mal ein Screenshot von der Struktur gemacht!

DeddyH 29. Aug 2011 12:31

AW: Verzeichnisstruktur
 
Also wohl eher so:
Delphi-Quellcode:
function GetDirFromFilename(const Filename, IncludingDir: string;
  BackslashPositions: array of integer): string;
var
  i, RealPosition: integer;
  SubDir: string;
begin
  RealPosition := 0;
  SubDir := Filename;
  for i := Low(BackslashPositions) to High(BackslashPositions) do
    begin
      Insert('\', SubDir, BackslashPositions[i] + RealPosition);
      inc(RealPosition);
    end;
  SubDir := ExtractFilePath(IncludeTrailingPathDelimiter(IncludingDir) + SubDir);
  Result := SubDir + Filename;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetDirFromFilename('9R223000L5.jpg', 'G:\PICS', [2,3,5,6]))
end;

medirar 29. Aug 2011 14:37

AW: Verzeichnisstruktur
 
Das ist es! Super Genial Ich werde das mal heute abend ausprobieren. Nur ist mir nicht klar wie ich das jetzt mit IrfanView direkt öffnen kann.:shock:

Prototypjack 29. Aug 2011 14:40

AW: Verzeichnisstruktur
 
Zitat:

Zitat von medirar (Beitrag 1120145)
Nur ist mir nicht klar wie ich das jetzt mit IrfanView direkt öffnen kann.:shock:

Kommt darauf an. Wenn IrfanView das Standardprogramm für Bildbetrachtung ist, dann reicht ShellExecute des Bildes, sonst ShellExecute der IrfanView-Exe mit Dateinamen im Parameter.

Grüße,
Max

medirar 29. Aug 2011 14:43

AW: Verzeichnisstruktur
 
So? :shock:

Delphi-Quellcode:
ShellExecute(0,'open','i_view32.exe',Pchar (edit1.Text),'C:\Software\irfanview\',SW_SHOW)
Ich habs mit Edit1.Text gemacht zur direkten eingabe!

DeddyH 29. Aug 2011 14:48

AW: Verzeichnisstruktur
 
Versuch mal
Delphi-Quellcode:
ShellExecute(0,
             'open',
             'C:\Software\irfanview\i_view32.exe',
             Pchar(GetDirFromFilename(edit1.Text, 'G:\PICS', [2,3,5,6])),
             nil,
             SW_SHOW)

medirar 29. Aug 2011 16:17

AW: Verzeichnisstruktur
 
Hi! ich bin gerade eben nach hause gekommen und habs ausprobiert alles funktioniert wunderbar....echt geil! Vielen herzlichen Dank!

nur eine Fehlerroutine funktioniert nicht. Wird hier komplizierter? :shock:

DeddyH 29. Aug 2011 16:24

AW: Verzeichnisstruktur
 
Wie meinen?

medirar 29. Aug 2011 16:34

AW: Verzeichnisstruktur
 
Sorry!:-D

Das Bild öffnet nur wenn es vorhanden ist...wenn nicht kommt eine Fehlermeldung!....

DeddyH 29. Aug 2011 16:40

AW: Verzeichnisstruktur
 
Dann musst Du vorher prüfen, ob es die Datei auch gibt (FileExists).

medirar 29. Aug 2011 16:50

AW: Verzeichnisstruktur
 
ahh. Meinst Du so?

Delphi-Quellcode:
begin
if FileExists(Pchar(GetDirFromFilename(edit1.Text+'.jpg', 'G:\PICS', [2,3,5,6])))
  then
ShellExecute(0,
             'open',
             'C:\Program Files\IrfanView\i_view32.exe',
             Pchar(GetDirFromFilename(edit1.Text+'.jpg', 'G:\PICS', [2,3,5,6])),
             nil,
             SW_SHOW)
            //end;
           else
           ShowMessage('Nicht gefunden!')
  end;
end.

DeddyH 29. Aug 2011 16:52

AW: Verzeichnisstruktur
 
Jepp, obwohl ich da dann lieber eine Zwischenvariable nutzen würde, damit die Funktion nicht mehrfach durchlaufen werden muss.
Delphi-Quellcode:
begin
  Datei := GetDirFromFilename(edit1.Text+'.jpg', 'G:\PICS', [2,3,5,6]);
  if FileExists(Datei)
  then
    ShellExecute(0,
             'open',
             'C:\Program Files\IrfanView\i_view32.exe',
             Pchar(Datei),
             nil,
             SW_SHOW)
            //end;
           else
           ShowMessage('Nicht gefunden!')
  end;
end.

medirar 29. Aug 2011 16:54

AW: Verzeichnisstruktur
 
Vielen, vielen Dank! :-D

DeddyH 29. Aug 2011 16:56

AW: Verzeichnisstruktur
 
Keine Ursache :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 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