![]() |
Delphi-Version: 7
ShellExecute macht probleme
Hi, ich möchte mit ShellExecute ein .txt File drucken.
nur meckert der compiler jedesmal aufs neue " Undeclared Identifier". Gleichezeitg fehlt ein semicolon oder operator Muss ich irgendwo irgendwo etwas deklarieren? Hab mich schon durchs Forum gewühlt und bin nicht fündig geworden. Hier mal mein Code:
Delphi-Quellcode:
Laut Forenbeiträgen reicht ja eine zeile zum drucken.
//'Pfad', 'Themenfeld2' und 'Schuelerdateiname' sind variablen mit strings als inhalt.
AssignFile (infile, Pfad+'Auswertung\'+Themenfeld2+' '+Schuelerdateiname); ShellExecute(Handle, 'print', PChar(infile), nil, nil, SW_SHOW); |
AW: ShellExecute macht probleme
Wo meckert er genau?
|
AW: ShellExecute macht probleme
Ist in der Uses-Klauses ShellAPI eingebunden? Und warum fehlt wieder mal jegliche Fehlerbehandlung?
|
AW: ShellExecute macht probleme
infile nicht erst öffnen, ShellExecute den Pfad zur Datei übergeben ;)
|
AW: ShellExecute macht probleme
WOW
erstmal danke für die unglaublich schnelle antwort! 1. Hab die ShellApi nicht eingebunden gehabt. -> danke für den tipp. 2. gibt es eine möglichekeit nicht den pfad direkt anzugeben sondern über die vars? weil es werden unterschiedliche dokumente gedruckt aus unterschiedlichen ordnern. Deswegen auch
Delphi-Quellcode:
Pfad:=ExtractFilePath(ParamStr(0));
|
AW: ShellExecute macht probleme
Ja mit
Delphi-Quellcode:
. Du hast aber eine File-Variable übergeben
PChar(Ffad)
|
AW: ShellExecute macht probleme
so, dies wäre meine Pfadangabe
Delphi-Quellcode:
. Muss ich die als str oder char übergeben? oder kommt dies in eine extra Variable?
Pfad+'Auswertung\'+Themenfeld2+' '+Schuelerdateiname
Delphi-Quellcode:
dadurch dass ich noch nie mit ShellExecute gearbeitet habe ist dies völliges neuland für mich.
Ffad:=Pfad+'Auswertung\'+Themenfeld2+' '+Schuelerdateiname; //Ffad->typ?
ShellExecute(Handle, 'print', PChar(Ffad), nil, nil, SW_SHOW); |
AW: ShellExecute macht probleme
Windows-API-Funktionen erwarten eine c-String (Zeiger;PChar)
|
AW: ShellExecute macht probleme
Sollte so wie du es hast bereits gehen. Ansonsten @Ffad[1] ...
|
AW: ShellExecute macht probleme
danke für die viele und schnelle hilfe.
allerdings taucht während der ausführung des programms der nächse Fehler auf:
Delphi-Quellcode:
und das übersteigt meine fähigkeiten um längen. zumal ich keine ahnug habe was das ist...
'access vioalation at address 76a5d9ef in module 'KERNELbase.dll'. read of address 00000043'.
hier der code:
Delphi-Quellcode:
lala:=(Pfad+'Auswertung\'+Schuelerdateiname);
Ffad:=lala[1];//nicht schön, wusste mir nicht anders zu helfen ShellExecute(Handle, 'print', PChar(Ffad), nil, nil, SW_SHOW); |
AW: ShellExecute macht probleme
Ich meinte so:
Delphi-Quellcode:
Ffad:=Pfad+'Auswertung\'+Schuelerdateiname;
ShellExecute(Handle, 'print', @Ffad[1], nil, nil, SW_SHOW); |
AW: ShellExecute macht probleme
Macht Delphi nicht automatisch einen PChar daraus?
|
AW: ShellExecute macht probleme
Zitat:
Aber ohne das @ in seinem Code wird's trotzdem nix. |
AW: ShellExecute macht probleme
Zitat:
|
AW: ShellExecute macht probleme
Zitat:
![]() |
AW: ShellExecute macht probleme
danke!
nur druckt er nix. hab es dir überprüfung halber einen virtuellen drucker als standart eingesetzt. Edit: das tut hätte ich mal vorher sehen müssen.. |
AW: ShellExecute macht probleme
Welches Programm wird den geöffnet? Notepad?
|
AW: ShellExecute macht probleme
der schlichte editor.
|
AW: ShellExecute macht probleme
Delphi-Quellcode:
erzeugt auch nichts im Spooler?
shellexecute(handle,'PRINT',PChar(Ffad),nil,nil,sw_Hide)
was passiert wenn Du in dem Editor der mit sw_Show aufgeht auf drucken gehst? |
AW: ShellExecute macht probleme
nix. der editr wird nicht mal geöffnet..
|
AW: ShellExecute macht probleme
Ist die Dateiendung .txt überhaupt mit einem Programm verknüpft ?
|
AW: ShellExecute macht probleme
ob ich etwas vorgegeben habe als verknüpfung? nein.
aber .txt ist doch standartmäßig mit dem editor zu öffnen, richtig? |
AW: ShellExecute macht probleme
Ist denn in der Registry unter HKEY_CLASSES_ROOT\txtfile\shell\print\command etwas eingetragen?
|
AW: ShellExecute macht probleme
Liste der Anhänge anzeigen (Anzahl: 1)
Nur das.
Wenn es hilft, ich habe Win7 64bit |
AW: ShellExecute macht probleme
Hast Du schon den Inhalt der Variable für den Pfad auf Fehler (ShowMessage) geprüft ? Gemäß MS wird fully_qualified_path_to_folder verlangt.
|
AW: ShellExecute macht probleme
die variablen haben sicher keine fehler, hab das mit dem debugger überprüft. außerdem nutze ich die selbe Pfadangabe so für das schreiben/ lesen in .txt files an anderer stelle im programm.
Die Pfandangabe sieht zusammengsetzt so aus:
Delphi-Quellcode:
(im debugger)
Ffad:='C:\Users\torro\Documents\Dokumente\projekt\beta 1.5\Auswertung\dateiname.txt'
|
AW: ShellExecute macht probleme
Das war aber der falsche Schlüssel (nicht unter .txt, sondern wirklich unter txtfile).
|
AW: ShellExecute macht probleme
Liste der Anhänge anzeigen (Anzahl: 1)
nur das.
|
AW: ShellExecute macht probleme
Versuch mal
Delphi-Quellcode:
rt := ShellExecute(Handle, 'print', PChar(Pfad), '', '', SW_SHOW);
|
AW: ShellExecute macht probleme
Ich habe noch im Hinterkopf, dass Pfadangaben keine Leerzeichen enthalten durften. Ob das heute noch so ist kann ich nicht beurteilen.
Du könntest aber auch mal folgende Syntax testen:
Delphi-Quellcode:
try
ShellExecute(0, 'open', PChar(Ffad), nil, nil,SW_SHOWNORMAL); except on E:Exception do begin Messagedlg(E.Message, mtError, [mbOK], 0); end; end; |
AW: ShellExecute macht probleme
PERFEKT! Es fuktioniert!
wo da jetzt der große unterschied zum anderem code ist sehe ich grad nicht, aber es funktioniert und vielen dank :D |
AW: ShellExecute macht probleme
Welcher Code?
|
AW: ShellExecute macht probleme
Das würde bedeuten, dass Wordpad zum Drucken benutzt werden soll. Zur Sicherheit kannst Du aber die folgenden Schritte noch einmal abklappern (allerdings ohne Gewähr, da ich kein Win7 64 habe):
- unter HCCR\.txt den Standardwert ermitteln (heißt bei mir unter Vista 32 "txtfile") - nun unter HCCR bis zu diesem Wert weiterhangeln (also bei mir HCCR\txtfile) - jetzt die Eintragungen unter shell kontrollieren (open, print, ggf. printto) Wenn das alles auf existierende Programme verweist und das Dokument auch wirklich unter dem angegebenen Pfad vorhanden ist, dann weiß ich im Moment auch nicht weiter. [edit] *Huch*, wo kommen denn die Postings her? [/edit] |
AW: ShellExecute macht probleme
Zitat:
|
AW: ShellExecute macht probleme
Wo soll die Exception herkommen? Wenn dann den Rückgabewert von Shellexecute auswerten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz