AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Öffnen einer durch DBEdit festgelegten .txt-Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Öffnen einer durch DBEdit festgelegten .txt-Datei

Ein Thema von jonrot1906 · begonnen am 24. Okt 2015 · letzter Beitrag vom 25. Okt 2015
Antwort Antwort
jonrot1906

Registriert seit: 18. Aug 2015
4 Beiträge
 
#1

Öffnen einer durch DBEdit festgelegten .txt-Datei

  Alt 24. Okt 2015, 21:30
Liebe Delphi-Praxis-Community,

ist es möglich, eine Datei (genauer gesagt eine .txt-Datei), welche durch ein DBEdit-Feld festgelegt ist beispielsweise mit einer TProcess-Procedur oder ShellExecute zu öffnen? Der Dateiname soll also im DBEdit-Feld ausgegeben werden (vorher in einer Art Adressbuch festgelegt) und die Datei bei Click auf einen Button geöffnet werden - klingt simpel, aber ich beiße mir daran ein wenig die Zähne aus. Könnt ihr mir einen Tipp geben? Meine Ideen (beispielsweise eine ShellExecute "auseinandernehmen", den Dateinamen einfügen und öffnen) sind bis jetzt weitgehend schiefgegangen. Über eine Antwort würde ich mich sehr freuen.

Mit freundlichen Grüßen,

jonrot1906.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Öffnen einer durch DBEdit festgelegten .txt-Datei

  Alt 24. Okt 2015, 21:42
Wobei hast du denn jetzt das Problem?
  1. String auslesen
  2. ShellExecute aufrufen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Öffnen einer durch DBEdit festgelegten .txt-Datei

  Alt 25. Okt 2015, 04:51
Hallo,
was ich nie verstehen werde:
Warum gibt es bei so einer Frage nie Quellcode?

Heiko
Heiko
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Öffnen einer durch DBEdit festgelegten .txt-Datei

  Alt 25. Okt 2015, 11:00
Was zum Geier soll das sein: ein DBEdit-Feld? DBEdit ist eine datensensitive Komponente zur Darstellung und Bearbeitung des Inhalts eines Tabellenfeldes. Dem Feld ist es dabei vollkommen egal, ob es durch ein DBEdit oder z.B. ein DBText dargestellt wird. Mit anderen Worten: die zufällig oder absichtlich gewählte Komponente zur Darstellung des Feldinhaltes definiert nicht das Feld. Daher gibt es auch kein DBEdit-Feld

Hast du eine Tabelle, die über eine Spalte verfügt, in der du komplette Dateinamen abspeicherst, rufst du einfach den jeweiligen Dateinamen aus der Datenbank ab. Dabei ist es vollkommen gleichgültig, ob dieser Dateiname gerade in einer datensensitiven Komponente angezeigt wird oder nicht.
Delphi-Quellcode:
Procedure TDatMod.Q_MyTableAfterScroll(DataSet: TDataSet);
begin
  GlobalerDateiName := Q_MyTable.FieldByName('DATEINAME').AsString;
end;
Diesen Dateinamen übergibst du dann der entsprechenden Methode, um z.B. eine URL anzuzeigen:
Delphi-Quellcode:
Procedure TGlobalix.URLanzeigen(Const URLText: string; Handle: HWND);
begin
   URL := PChar(URLText + #0);
   ShellExecute(Handle, nil, URL, nil, nil, SW_SHOW);
end;
Oder um ein Programm zu starten, das mit dem Dateityp verknüpft ist:
Delphi-Quellcode:
Procedure TGlobalix.CallApplication(Const Datei: string; Handle: HWND);
begin
  ShellExecute(Handle, 'open',PChar(ExtractFileName(Datei)),
               nil,PChar(ExtractPileDir(Datei)),SW_SHOWNORMAL);
end;
  Mit Zitat antworten Zitat
jonrot1906

Registriert seit: 18. Aug 2015
4 Beiträge
 
#5

AW: Öffnen einer durch DBEdit festgelegten .txt-Datei

  Alt 25. Okt 2015, 19:27
Zunächst erstmal vielen Dank für die schnellen Antworten. Die angebrachten Bemerkungen werde ich mir zu Herzen nehmen und versuchen, es beim nächsten Mal besser zu machen.
Mein Grundproblem hat @perlsau ganz gut erkannt und auch sehr gut beantwortet, dankesehr dafür.
Im Folgenden habe ich den Quellcode meines Programms angefügt, wobei ich dazu sagen muss, dass dieser aktuell noch in Lazarus geschrieben ist.

Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, sqlite3conn, sqldb, db, FileUtil, Forms, Controls,
  Graphics, Dialogs, StdCtrls, ExtCtrls, DBGrids, DbCtrls, Calendar, EditBtn,
  ComCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Calendar1: TCalendar;
    DataSource1: TDataSource;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    FileNameEdit1: TFileNameEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    SQLite3Connection1: TSQLite3Connection;
    SQLQuery1: TSQLQuery;
    SQLTransaction1: TSQLTransaction;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }


procedure TForm1.Button1Click(Sender: TObject);
begin
    SQLQuery1.Edit;
    SQLQuery1.UpdateMode:=UpWhereChanged;
    SQLQuery1.ApplyUpdates;
    SQLTransaction1.Commit;
    SQLQuery1.Close;
    SQLQuery1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SQLQuery1.Close;
  SQLQuery1.Open;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
   o : String;
begin
  o:=DBEdit1.Text;
  FileNameEdit1.Text:='C:\Users\Jonas\Documents\BUSSE\Adressbuch2\' + o + '.txt';
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
     Form1. Caption:='SQLite database with DBNavigator';

      SQLite3Connection1.DatabaseName:='Adressbook.db';
      SQLite3Connection1.Connected:=true;

      SQLTransaction1.Database:=SQLite3Connection1;

      SQLQuery1.Database:=SQLite3Connection1;
      SQLQuery1.SQL.text:='Select * FROM Adressbook';
      SQLQuery1.open;

      DataSource1.DataSet:=SQLQuery1;

      DBGrid1.DataSource:=DataSource1;

      DBNavigator1.DataSource:=DataSource1;

      DBEdit1.DataSource:=Datasource1;
      DBEdit2.DataSource:=Datasource1;
      DBEdit3.DataSource:=Datasource1;
      DBEdit4.DataSource:=Datasource1;
      DBEdit5.DataSource:=Datasource1;
      DBEdit6.DataSource:=Datasource1;
      DBEdit7.DataSource:=Datasource1;
      DBEdit8.DataSource:=Datasource1;
      DBEdit9.DataSource:=Datasource1;

      DBEdit1.DataField:='ID';
      DBEdit2.DataField:='Vorname';
      DBEdit3.DataField:='Nachname';
      DBEdit4.DataField:='Strasse';
      DBEdit5.DataField:='PLZ';
      DBEdit6.DataField:='Ort';
      DBEdit7.DataField:='EMail';
      DBEdit8.DataField:='Telefon';
      DBEdit9.DataField:='Verzeichnis';

      DBGrid1.AutoFillColumns:=true;
end;

end.
Anstelle von FileNameEdit wollte ich gern ShellExecute oder ähnliches einfügen, um den in der Spalte 'Verzeichnis' ausgegebenen Dateinamen schließlich zu öffnen.
Die Idee von @perlsau werde ich gleich mal ausprobieren, mal sehen ob es funktioniert.

Mit freundlichen Grüßen

jonrot1906
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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