Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   ShellExecute macht probleme (https://www.delphipraxis.net/155986-shellexecute-macht-probleme.html)

torro 15. Nov 2010 21:21

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:
//'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);
Laut Forenbeiträgen reicht ja eine zeile zum drucken.

mkinzler 15. Nov 2010 21:23

AW: ShellExecute macht probleme
 
Wo meckert er genau?

Luckie 15. Nov 2010 21:23

AW: ShellExecute macht probleme
 
Ist in der Uses-Klauses ShellAPI eingebunden? Und warum fehlt wieder mal jegliche Fehlerbehandlung?

Assarbad 15. Nov 2010 21:24

AW: ShellExecute macht probleme
 
infile nicht erst öffnen, ShellExecute den Pfad zur Datei übergeben ;)

torro 15. Nov 2010 21:30

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));

mkinzler 15. Nov 2010 21:31

AW: ShellExecute macht probleme
 
Ja mit
Delphi-Quellcode:
PChar(Ffad)
. Du hast aber eine File-Variable übergeben

torro 15. Nov 2010 21:38

AW: ShellExecute macht probleme
 
so, dies wäre meine Pfadangabe
Delphi-Quellcode:
Pfad+'Auswertung\'+Themenfeld2+' '+Schuelerdateiname
. Muss ich die als str oder char übergeben? oder kommt dies in eine extra Variable?
Delphi-Quellcode:
Ffad:=Pfad+'Auswertung\'+Themenfeld2+' '+Schuelerdateiname; //Ffad->typ?
ShellExecute(Handle, 'print', PChar(Ffad), nil, nil, SW_SHOW);
dadurch dass ich noch nie mit ShellExecute gearbeitet habe ist dies völliges neuland für mich.

mkinzler 15. Nov 2010 21:41

AW: ShellExecute macht probleme
 
Windows-API-Funktionen erwarten eine c-String (Zeiger;PChar)

Assarbad 15. Nov 2010 21:41

AW: ShellExecute macht probleme
 
Sollte so wie du es hast bereits gehen. Ansonsten @Ffad[1] ...

torro 15. Nov 2010 22:05

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:
'access vioalation at address 76a5d9ef in module 'KERNELbase.dll'. read of address 00000043'.
und das übersteigt meine fähigkeiten um längen. zumal ich keine ahnug habe was das ist...

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);

Assarbad 15. Nov 2010 22:07

AW: ShellExecute macht probleme
 
Ich meinte so:
Delphi-Quellcode:
    Ffad:=Pfad+'Auswertung\'+Schuelerdateiname;
    ShellExecute(Handle, 'print', @Ffad[1], nil, nil, SW_SHOW);

Luckie 15. Nov 2010 22:09

AW: ShellExecute macht probleme
 
Macht Delphi nicht automatisch einen PChar daraus?

Assarbad 15. Nov 2010 22:12

AW: ShellExecute macht probleme
 
Zitat:

Zitat von Luckie (Beitrag 1061766)
Macht Delphi nicht automatisch einen PChar daraus?

K.A. erinnere mich nicht mehr. Motzi hatte da mal ein feines Tutorial mit Details zu diesem Thema.

Aber ohne das @ in seinem Code wird's trotzdem nix.

mkinzler 15. Nov 2010 22:14

AW: ShellExecute macht probleme
 
Zitat:

Zitat von Luckie (Beitrag 1061766)
Macht Delphi nicht automatisch einen PChar daraus?

Wenn man eine Zeichenkette übergibt ja, bei einer Variablen nicht.

Assarbad 15. Nov 2010 22:18

AW: ShellExecute macht probleme
 
Zitat:

Zitat von Assarbad (Beitrag 1061767)
Motzi hatte da mal ein feines Tutorial mit Details zu diesem Thema.

Hat ne Weile gedauert. Hier der Link: http://www.manuel-poeter.de/hitcount...ls/Strings.zip

torro 15. Nov 2010 22:18

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..

mkinzler 15. Nov 2010 22:19

AW: ShellExecute macht probleme
 
Welches Programm wird den geöffnet? Notepad?

torro 15. Nov 2010 22:21

AW: ShellExecute macht probleme
 
der schlichte editor.

Bummi 15. Nov 2010 22:35

AW: ShellExecute macht probleme
 
Delphi-Quellcode:
shellexecute(handle,'PRINT',PChar(Ffad),nil,nil,sw_Hide)
erzeugt auch nichts im Spooler?
was passiert wenn Du in dem Editor der mit sw_Show aufgeht auf drucken gehst?

torro 16. Nov 2010 06:51

AW: ShellExecute macht probleme
 
nix. der editr wird nicht mal geöffnet..

pmoegenb 16. Nov 2010 09:37

AW: ShellExecute macht probleme
 
Ist die Dateiendung .txt überhaupt mit einem Programm verknüpft ?

torro 16. Nov 2010 09:57

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?

DeddyH 16. Nov 2010 10:11

AW: ShellExecute macht probleme
 
Ist denn in der Registry unter HKEY_CLASSES_ROOT\txtfile\shell\print\command etwas eingetragen?

torro 16. Nov 2010 10:21

AW: ShellExecute macht probleme
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nur das.
Wenn es hilft, ich habe Win7 64bit

pmoegenb 16. Nov 2010 10:41

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.

torro 16. Nov 2010 10:49

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:
Ffad:='C:\Users\torro\Documents\Dokumente\projekt\beta 1.5\Auswertung\dateiname.txt'
(im debugger)

DeddyH 16. Nov 2010 10:52

AW: ShellExecute macht probleme
 
Das war aber der falsche Schlüssel (nicht unter .txt, sondern wirklich unter txtfile).

torro 16. Nov 2010 11:00

AW: ShellExecute macht probleme
 
Liste der Anhänge anzeigen (Anzahl: 1)
nur das.

mkinzler 16. Nov 2010 11:03

AW: ShellExecute macht probleme
 
Versuch mal
Delphi-Quellcode:
rt := ShellExecute(Handle, 'print', PChar(Pfad), '', '', SW_SHOW);

pmoegenb 16. Nov 2010 11:03

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;

torro 16. Nov 2010 11:07

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

mkinzler 16. Nov 2010 11:07

AW: ShellExecute macht probleme
 
Welcher Code?

DeddyH 16. Nov 2010 11:10

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]

torro 16. Nov 2010 11:19

AW: ShellExecute macht probleme
 
Zitat:

Zitat von pmoegenb (Beitrag 1061868)
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;

der code. nochmals danke für die hilfe :)

Luckie 16. Nov 2010 11:33

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