Einzelnen Beitrag anzeigen

jacko1988

Registriert seit: 27. Nov 2012
Ort: Duisburg
18 Beiträge
 
Delphi XE3 Professional
 
#1

Kontextmenü, Parameterübergabe, Dateiupload

  Alt 28. Nov 2012, 09:26
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?
Daniel
  Mit Zitat antworten Zitat