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 kann nicht erstellt werden (https://www.delphipraxis.net/197950-datei-kann-nicht-erstellt-werden.html)

Delbor 20. Sep 2018 16:35

Datei kann nicht erstellt werden
 
Hi zusammen

Mit meinem Programm scanne ich eine Vorlage zur Erstellung eines PDFs. Am Ende des Scannvorganges wird diese Prozedur aufgerufen:
Delphi-Quellcode:
procedure TScanningFrame.TwainTwainAcquire(Sender: TObject; const Index: Integer;
  Image: TBitmap; var Cancel: Boolean);
  var JpegGraphic : TJpegImage; LFileName : String;
begin
  Edit1.Text := Image.ClassName;   //Scaning ist abgeschlossen
  if Assigned(OnFinishedBmpScanEvent) then                           // OnFinishedBmpScanEvent : TFinishedBmpScanEvent
  OnFinishedBmpScanEvent(Sender,Image);
  ImgHolder.Picture.Assign(Image);
  JpegGraphic := TJPegImage.Create;
  try
     JPegGraphic.Assign(Image);
     JPegGraphic.SaveToFile('C:\PDFOfficerAppdata\PdfOfficerData\ScannedPic.jpeg)');
     LFileName := 'C:\PDFOfficerAppdata\PdfOfficerData\ScannedPic.jpeg)';
     FCustomCreatePDFClass.Create(Owner);
     FCustomCreatePDFClass.FileName := LFileName;
//     FCustomCreatePDFClass.OutputFile
     FCustomCreatePDFClass.CreatePDFCreator;

  finally
     JPegGraphic.Free;
  end;
Der Versuch, das Jpeg zu speichern, erzeugt folgende Fehlermeldung:
Zitat:

Im Projekt PDFSynOfficer.exe ist eine Exception der Klasse EFCreateError mit der Meldung 'Datei "C:\PDFOfficerMini\AppData\ScannedPic.jpeg)" kann nicht erstellt werden. Das System kann den angegebenen Pfad nicht finden' aufgetreten.
Und tatsächlich: Ich hatte hier diesen Pfad anstelle von "'C:\PDFOfficerAppdata\PdfOfficerData\ScannedPic.j peg)'" angegeben - die Anwendung sollte ein separates Testprojekt nebst dem PDFOfficer werden, hatte dann aber vergessen, die entsprechenden Verzeichnisse auch wirklich anzulegen.
Ich änderte also den angemeckerten Pfad auf den bestehenden und löschte, nachdem ich die obige Fehlermeldung wieder erhielt, die DCUs und die Exe, um so sämtliche "Erinnerungen" Delphis auszumerzen - Pustekuchen!! Delphie meckert fröhlich weiter!

Weiss jemand Rat?

Gruss
Delbor

sh17 20. Sep 2018 16:47

AW: Datei kann nicht erstellt werden
 
also ich sehe hinter

JPegGraphic.SaveToFile('C:\PDFOfficerAppdata\PdfOf ficerData\ScannedPic.jpeg)');

jpeg eine ) ... ist das richtig?

Ebenso bei LFileName

[OT]
und warum eigentlich nicht jpg?
[/OT]

EWeiss 20. Sep 2018 16:53

AW: Datei kann nicht erstellt werden
 
Zitat:

jpeg eine ) ... ist das richtig?
Bestimmt nicht ;)
Zitat:

und warum eigentlich nicht jpg?
Warum?
Es spricht nichts gegen *.jpeg
Ich verwende mitunter sogar beide wenn ich eine Datei mit gleichen Namen als jpg Format abspeichern will.

Er leitet es wohl von JpegGraphic ab.

gruss

Delbor 20. Sep 2018 18:17

AW: Datei kann nicht erstellt werden
 
Hi zusammen

Tatsächlich hat sich hier beim einkopieren des richtigen Pfades der Fehler mit der überzähligen Klammer eingeschlichen - der ist jetzt weg - das Resultat ist dasselbe, obwohl ich exe und DCUs wieder gelöscht habe.

Diese überzähligen Klammern erklären aber nicht, wieso Delphi nach einem anderslautenden Pfad als im Code angegeben sucht.

Gruss
Delbor

Zacherl 20. Sep 2018 18:20

AW: Datei kann nicht erstellt werden
 
Dass es überhaupt compiled, obwohl du einen Syntaxfehler eingebaut hattest, lässt darauf schließen, dass deine Unit irgendwie gar nicht verwendet wurd, oder tatsächlich noch alte DCUs verwendet werden. Kannst du die Unit mal testweise umbenennen?

KodeZwerg 20. Sep 2018 18:29

AW: Datei kann nicht erstellt werden
 
Zitat:

Zitat von Zacherl (Beitrag 1413751)
Dass es überhaupt compiled, obwohl du einen Syntaxfehler eingebaut hattest, lässt darauf schließen, dass deine Unit irgendwie gar nicht verwendet wurd, oder tatsächlich noch alte DCUs verwendet werden. Kannst du die Unit mal testweise umbenennen?

Bezieht sich diese Aussage auf die Klammer zuviel im 'String'? Falls ja, mein Delphi kontrolliert auch keine Strings ob die gültig sind.

KodeZwerg 20. Sep 2018 18:32

AW: Datei kann nicht erstellt werden
 
An TE: Versuche doch mal eine SaveFileDialog.Execute Methode zu verwenden, funktioniert es dann? (Nur mal probeweise)

hoika 20. Sep 2018 18:39

AW: Datei kann nicht erstellt werden
 
Hallo,
mal einen komplett anderen Pfad nehmen.
Wirklich alle dcus's suchen (SearchEverything)

p80286 20. Sep 2018 18:48

AW: Datei kann nicht erstellt werden
 
Zitat:

Zitat von Delbor (Beitrag 1413750)
Diese überzähligen Klammern erklären aber nicht, wieso Delphi nach einem anderslautenden Pfad als im Code angegeben sucht.

Im allgemeinen arbeiten Programme nur mit Daten die ihnen bekannt sind. Also solle irgendwo die "falsche" Pfad/Dateiinformation liegen.
Was ist mit der Registry, Parameter(n)-Dateie(n) usw.?
Vllt. ist es auch erhellend mal nach dem "falschen" Pfad/Dateistring zu suchen?

Gruß
K-H

Luckie 20. Sep 2018 20:30

AW: Datei kann nicht erstellt werden
 
Lass dir den Pfad doch mal ausgeben in einer Messagebox oder so.

Delbor 20. Sep 2018 21:59

AW: Datei kann nicht erstellt werden
 
Hi zusammen

Zitat:

Zitat von p80286 (Beitrag 1413763)
Vllt. ist es auch erhellend mal nach dem "falschen" Pfad/Dateistring zu suchen?
Gruß
K-H

Das war die Lösung! Ich hatte eine Miniausgabe meines inzwischen relativ umfangreichen PDFOffizers erstellt, um es hier zu zippen, musste dann aber nochmal eine extra DP-Version erstellen, und dabei hatte ich einzelne Dateien offenbar vergessen, aus dem alten Projekt zu entfernen, bzw. dem neuen Projekt die richtige Datei hinzuzufügen.

Der Ablauf sollte in etwa so sein:
  1. Projekt im neuen Verzeichnis speichern(Namen leicht ändern).
  2. Mainform unter dem neuen Projektverzeichnis speichern.
  3. Mainunit aus dem Projekt entfernen und schliessen
  4. Die im neuen Projektverzeichnis gespeicherte Mainform laden und dem neuen Projekt hinzufügen
  5. Dasselbe mit anderen Units wiederholen
  6. Und nie einen Schritt vergessen..

Ja, ich weiss, ich hätte ja Tortoisegit installiert. Und eigentlich habe ich mich ja auf Delphi Tokio gerade wegen der GitIntegration gefreut - die Dokumentation ist recht ausführlich, und ich müsste mir nicht alles mühsam mit Google übersetzen. Nur leider ist diese Integration irgendwie nicht wirklich brauchbar (keine Branches etc).

Gruss
Delbor

freimatz 21. Sep 2018 07:33

AW: Datei kann nicht erstellt werden
 
Wir verwenden git sehr excessiv. Ich benutze aber explizit nicht das git in Delphi selber. Ich möchte das getrennt haben und genau sehen was ich da mache. Delphi selber macht ab und zu auch komische Dinge mit den Dateien (dfm, dproj) und da sehe ich mit separaten Tools besser was da passiert und was wirklich dann im Repository landet.

himitsu 21. Sep 2018 10:14

AW: Datei kann nicht erstellt werden
 
Zitat:

Delphi-Quellcode:
FCustomCreatePDFClass.Create(Owner);

Wer sieht den Fehler?

Jumpy 21. Sep 2018 10:45

AW: Datei kann nicht erstellt werden
 
Zitat:

Zitat von himitsu (Beitrag 1413794)
Zitat:

Delphi-Quellcode:
FCustomCreatePDFClass.Create(Owner);

Wer sieht den Fehler?

Delphi-Quellcode:
FCustomCreatePDFClass:=TCustomCreatePDFClass.Create(Owner)
?

TBx 21. Sep 2018 10:46

AW: Datei kann nicht erstellt werden
 
Zitat:

Zitat von himitsu (Beitrag 1413794)
Zitat:

Delphi-Quellcode:
FCustomCreatePDFClass.Create(Owner);

Wer sieht den Fehler?

Ich finde es angebrachter, hier den vermuteten Fehler direkt zu erklären. Dem TE ist sicherlich nicht damit gedient, dass man sich über ihn lustig macht.

Um deine Frage zu beantworten:
Wenn man davon ausgeht, dass
Delphi-Quellcode:
var FCustomCreatePDFClass: TCustomCreatePDFClass
gegeben ist, dann müßte die Zeile korrekt
Delphi-Quellcode:
FCustomCreatePDFClass := TCustomCreatePDFClass.Create(Owner);
lauten.

himitsu 21. Sep 2018 11:16

AW: Datei kann nicht erstellt werden
 
OK, stimmt auch wieder.

Aber über den TE macht sich doch keiner lustig.
Wollte nur die Anderen draufstupsen, welche das seit duzenden Post übersehn hatten.
:duck:

Delbor 21. Sep 2018 12:00

AW: Datei kann nicht erstellt werden
 
Hi zusammen

Hier mal das Corpus Delicti: :-D
Delphi-Quellcode:
  try
     JPegGraphic.Assign(Image);
     JPegGraphic.SaveToFile('C:\PDFOfficerAppdata\PdfOfficerData\ScannedPic.jpeg)');
     LFileName := 'C:\PDFOfficerAppdata\PdfOfficerData\ScannedPic.jpeg)';
     FCustomCreatePDFClass.Create(Owner);
Das erzeugt keine FCustomCreatePDFClass-Instanz, sondern ruft den Constructor der Klasse auf:
Delphi-Quellcode:
constructor TCustomCreatePDFClass.Create(AOwner: TPersistent);
begin
   inherited Create;

end;
Die Methode hatte auch schon mehr zu tun - ich hab das aber mal ausgelagert:
Delphi-Quellcode:
procedure TCustomCreatePDFClass.CreatePDFCreator;
begin
   FPDFCreator := CoPdfCreatorObj.Create;
   FQueue := CoQueue.Create;
   FQueue.Initialize;
   FPDFCreator.AddFileToQueue(FFileName);

   if not FQueue.WaitForJob(10) then
      Showmessage('The print job did not reach the queue within 10 seconds')
   else
      Showmessage('Currently there are' + IntToStr(FQueue.Count) + ' job(s) in the queue');
      Showmessage('Getting job instance');
      FPrintJob := FQueue.NextJob;
      FPrintJob.SetProfileByGuid('DefaultGuid');
      Showmessage('Converting under DefaultGuid conversion profile');
      FPrintJob.ConvertTo(FFileName);

//    if (not printJob.IsFinished) or (not printJob.IsSuccessful) then
//      MsgBox "Could not convert the file: " & fullPath
//   else
//      MsgBox "Job finished successfully"
//    end if
//end if

//   FPDFCreator.PrintFile(FFileName);    //   CreateComObject ;       ('{9616B8B3-FE6E-4122-AC93-E46DBD571F87}'        IPrintjobInfo
end;
Im Installationsverzeichnis des PDFCreators befinden sich etliche Beispiele in diversen Programmiersprachen (nur nicht Delphi). Da ich keine dieser Sprachen wirklich kenne, gibt da noch jede Menge Fehler - der häufigste ist nach einem Create-Aufruf 'Komponente nicht registriert'.
Mit andern Worten: die Com-Schnittstelle des PDFCreators würde mir noch graue Haare verursachen, wenn ich nicht schon welche hätte
Aber dazu mehr in einem andern Thread.

Gruss
Delbor

p80286 21. Sep 2018 19:36

AW: Datei kann nicht erstellt werden
 
Noch ein kleiner Hinweis:
Delphi-Quellcode:
try
      JPegGraphic.Assign(Image);
      JPegGraphic.SaveToFile('C:\PDFOfficerAppdata\PdfOfficerData\ScannedPic.jpeg)');
      LFileName := 'C:\PDFOfficerAppdata\PdfOfficerData\ScannedPic.jpeg)';
      FCustomCreatePDFClass.Create(Owner);
Delphi-Quellcode:
try
      JPegGraphic.Assign(Image);
      LFileName := 'C:\PDFOfficerAppdata\PdfOfficerData\ScannedPic.jpeg)';
      JPegGraphic.SaveToFile(LFileName);
      FCustomCreatePDFClass.Create(Owner);
Das sollte etwas unempfindlicher gegen Tipfehler sein.

Gruß
K-H


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