Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Kontextmenü, Parameterübergabe, Dateiupload (https://www.delphipraxis.net/171844-kontextmenue-parameteruebergabe-dateiupload.html)

jacko1988 28. Nov 2012 09:26

Kontextmenü, Parameterübergabe, Dateiupload
 
Schönen Guten Tag zusammen,

da mich meine Delphi Erfahrung an einer Stelle nicht weiterbringt, habe ich mich mal registriert.

Zur Problem Erklärung:

Ich habe ein recht fortgeschrittenes Programm (von Aufwand und Zeit) welches in der Lage ist, via OpenDialog eine PDF zu nehmen und via Http wo hochzuladen.

Code:
procedure TForm1.PDFoeffnen();
var pdffileupl, pdffiletmp: String;
begin
 pdffiletmp:='';
 if PDFUploaded then pdffileupl:=pdffile else pdffileupl:='';

 Ini:=TIniFile.Create(rootpath+'cospace.ini');
  try
    begin
      OpenDialog1.InitialDir:= Ini.Readstring('Optionen', 'PDFStandartOpenPath','');
      OpenDialog1.execute;
    end;
  finally
    ini.free;
  end;
  pdfpathfile:=OpenDialog1.FileName;
  pdffiletmp:=Extractfilename(pdfpathfile);

  if pdffiletmp<>'' then
  begin
      pdffile:=pdffiletmp;
      cosupload();
      GetInfo();
      PDFFileProc(pdfpathfile, Extractfilepath(Application.exeName)+'archive\'+pdffile,'move');
      btnPDFoeffnen.Enabled:=False;
  end
  else
  begin
    btnPDFoeffnen.Enabled:=True;
  end;
  Opendialog1.FileName:='';

end;
Das funktioniert auch einwandfrei. Das Problem das ich habe bezieht sich auf eine Erweiterung des ganzen. Ich habe mein Programm in die Registry eingetragen und .pdf Dateien Damit verknüpft. Wenn man jetzt einen Rechtsklick macht auf eine PDF öffnet sich das Kontextmenü mit einem Eintrag meines Programms. Führt man dies aus, startet mein Programm und ich bekomme eine Showmessage mit dem Pfad und Namen der PDF. Funktioniert auch alles bis dahin. Jetzt soll aber eben dieser Pfad genommen werden undeben diese Datei und dann, man kanns eraten, soll die PDF hochgeladen werden.
Schaut so aus:

Code:

procedure TForm1.PDFoeffnenKontext(StrParam1: String);
      var SR : TSearchRec;
          Result: integer;
          pdffileupl, pdffiletmp: String;
begin
 showmessage(StrParam1);
 if FindFirst(StrParam1, faAnyFile, SR)=0 then begin
    Result:=SR.Size;
    FindClose(SR);
    showmessage(inttostr(Result));
  end;


 pdfpathfile:=StrParam1;
 pdffiletmp:=Extractfilename(pdfpathfile);
 if pdffiletmp<>'' then
  begin
      pdffile:=pdffiletmp;
      cosupload();
      PDFFileProc(pdfpathfile, Extractfilepath(Application.exeName)+'archive\'+pdffile,'move');
      btnPDFoeffnen.Enabled:=False;
  end
  else
  begin
    btnPDFoeffnen.Enabled:=True;
  end;

end;
Beide bisher gezeigten Codes laufen auf den Upload hinaus, welcher sich unter cosupload verbirgt.
Und da ist der Wurm drin.

Code:

procedure TForm1.cosupload();
begin
  try
 Showmessage('Test A');
 pbStatus.visible:=true;
 Showmessage('Test A1');
 s3:='';
 Showmessage('Test A2');
 Form1.lbStatuschng.caption:='PDF wird hochgeladen';
 Showmessage('Test A3');
 lbstatuschng.Font.Color:=clGreen;
 Showmessage('Test A4');
 lbStatusLED.Font.Color:=clGreen;
 Showmessage('Test A5');
 lbStatusLED.Visible:=True;
 Showmessage('Test A6');
 lbPDFName.Caption:=pdffile;
showmessage('Test A') wird mir noch angezeigt, danach gibts folgenden Fehler:


Exception Error
EAccessViolation : Zugriffsverletzung bei Adresse 00404394 in Modul 'Cospace.exe'. Lesen von Adresse FFFFFFFC


Kann sich das jemand erklären?

Bitte um Hilfe.

Mit freundlichem Gruß
jacko1988


PS.: Gibt es einen Spoiler Code im Forum?

DeddyH 28. Nov 2012 09:32

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Funktioniert es, wenn Du testhalber vor dem Aufruf von cosupload() ein Application.ProcessMessages einfügst?

himitsu 28. Nov 2012 09:37

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Deine TForm1-Instanz wurde auch "richtig" erstellt?
Also vor Aufruf von PDFoeffnenKontext.

PS: Du weißt aber, daß OpenDialog1.Execute einen Rckgabewert hat, welcher dir sagt, ob darin auf OK geklickt wurde?
Das solltest du besser mal verwenden und stattdessen dieses ganze wirre Zeugs, mit den Strings, abschaffen, denn da sieht doch keiner durch.

jacko1988 28. Nov 2012 09:54

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Vielen dank für diese raschen antworten.

@DeddiH

Nein, es gibt wieder den selben Fehler.

@himitsu

Das Programm befindet sich zum Testzeitpunkt im Compilierten und gestarteten Modus.

DeddyH 28. Nov 2012 09:54

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Ist denn das Fenster zu dem Zeitpunkt schon sichtbar?

himitsu 28. Nov 2012 10:02

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Das hatte ich nicht gefragt und ich war schon davon ausgegangen, daß es kompiliert war und das Programm lief ... sonst hätte diese Funktion auch nicht aufgerufen werden können. :zwinker:

Zitat:

Zitat von DeddyH (Beitrag 1193360)
Ist denn das Fenster zu dem Zeitpunkt schon sichtbar?

Jupp, sozusagen sowas.

Also,
ist die Fenster-Instanz erstellt und wenn ja wie?
Wann und wie/wo wird diese Methode aufgerufen?

DeddyH 28. Nov 2012 10:11

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Um das einmal zu präzisieren: wir hegen beide den Verdacht, dass die pbStatus-Instanz zum Aufruf-Zeitpunkt noch nicht existiert bzw. vollständig initialisiert ist.

jacko1988 28. Nov 2012 10:15

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Das Programm wird gestartet, Form1 ist sichtbar.
Form1 wird durch OnFormCreate erstellt.


Doch die ist vorhanden.
Es ist möglich über PDFoeffnen() eine PDF hochzuladen, nicht jedoch über PDFoeffnenKontext()

DeddyH 28. Nov 2012 10:41

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Und der Fehler tritt nachweislich in der pbStatus-Zeile auf (im Debugger durchgesteppt)?

jacko1988 28. Nov 2012 10:50

AW: Kontextmenü, Parameterübergabe, Dateiupload
 
Ja.
Nehme ich pbStatus.visible:=true; aus dem Code raus,
dann hängst bei Form1.lbStatuschng.caption:='PDF wird hochgeladen';.

Nehme ich alles bis zum eigentlichen Upload raus, gibt es keine Fehlermeldung, aber auch keinen Upload.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:12 Uhr.
Seite 1 von 5  1 23     Letzte »    

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