Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi PDF in DB speichern und öffnen danach Proggi-Abstutz (https://www.delphipraxis.net/168187-pdf-db-speichern-und-oeffnen-danach-proggi-abstutz.html)

DeddyH 11. Mai 2012 10:45

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Da fehlt aber noch mindestens ein try-finally-Block. Den Dateinamen solltest Du in einer Variablen oder Konstanten ablegen und dann die benutzen, außerdem sind relative Pfade böse.

Klaus01 11. Mai 2012 10:47

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
vielleicht solltest Du die Datei noch da ablegen, wo es allgemein üblich ist.
Im Temp Folder des Users oder im AppData Verzeichnis.
Stichwort dazu: SpecialFolders.

Grüße
Klaus

blondervolker 11. Mai 2012 10:51

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Ist es so richtig?:gruebel:

Delphi-Quellcode:
procedure TForm17.Button2Click(Sender: TObject);
var
  myPDF : String;
  fs : TFileStream;
begin
  fs:=TFileStream.Create('c:Temp\Dok.pdf',fmCreate or fmShareExclusive);
  myPDF := ADOTable1.FieldByName ('PDFFILE').AsString;
  fs.Write(mypdf[1],length(mypdf)*Sizeof(char));
  fs.Free;
  if ShellExecute(Application.Handle,
                 'open',
                 PChar('c:Temp\Dok.pdf'),
                 nil, nil, SW_NORMAL) <= 32 then
    ShowMessage('Es ist ein Fehler aufgetreten,da in der Datenbank keine Pdf Datei gefunden wurde.');

DeddyH 11. Mai 2012 11:08

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Versuch mal
Delphi-Quellcode:
procedure TForm17.Button2Click(Sender: TObject);
const
  FILENAME = 'Dok.pdf';
var
  myPDF, TempPath : String;
  fs : TFileStream;
begin
  SetLength(TempPath, GetTempPath(0, nil));
  GetTempPath(Length(TempPath), PChar(TempPath));
  SetLength(TempPath, StrLen(PChar(TempPath)));
  TempPath := IncludeTrailingPathDelimiter(TempPath) + FILENAME;
  fs:=TFileStream.Create(TempPath,fmCreate or fmShareExclusive);
  try
    myPDF := ADOTable1.FieldByName ('PDFFILE').AsString;
    fs.Write(mypdf[1],length(mypdf)*Sizeof(char));
  finally
    fs.Free;
  end;
  if ShellExecute(Application.Handle,
                 'open',
                 PChar(TempPath),
                 nil, nil, SW_NORMAL) <= 32 then
  ...

Sir Rufo 11. Mai 2012 22:36

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Hauahauaha, das brennt beim Lesen ja richtig in den Augen.

Gestartet wurde der Thread mit einem Blob-Feld, dessen Inhalt direkt über eine Methode in eine Datei gespeichert wurde.

Dann die blonde Versuchung den PDF Reader direkt damit zu füttern - als Parameter einen String - kein Problem, eben fix mal die PDF-Rohdaten in einen String gepackt und dem PDF-Reader zum Fressen gegeben. Und jetzt wundern warum der meckert. :-D

Sehr cool auch der Vorschlag die Daten aus dem String in einen Stream zu schreiben (dabei liegen die Daten eines BlobFields als Stream vor). Und mit der Methode SaveToFile (siehe erster Beitrag) wäre es noch simpler gewesen.

Sehr amüsant das Ganze ;) - der Start als Codelib Vorschlag ist ja auch schon ein Running Gag :mrgreen:

DeddyH 12. Mai 2012 05:43

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Nicht wundern, nur staunen :zwinker:

blondervolker 13. Mai 2012 10:34

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
hallo,
brennende augen?naja,recht hast du...:-D
immer lacht mich aus, ist ja auch ok :-D

trotzdem freue ich mich,wenn mir jemand über die strasse hilft :thumb:

Sir Rufo 13. Mai 2012 12:22

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Aber diese Hilfe sieht so aus, als wenn du am stolpern bist und dir gibt dann noch jemand einen Schuppser ;)

DeddyH 13. Mai 2012 12:50

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
Wenn Stützen nicht hilft, muss man es halt mit Schubsen versuchen :mrgreen:

mkinzler 13. Mai 2012 13:09

AW: PDF in DB speichern und öffnen danach Proggi-Abstutz
 
In die richtige Richtung, aber nicht vor das nächste Auto :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.
Seite 3 von 4     123 4      

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