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?