AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Shellexecute Problem mit Copy

Ein Thema von Jamah · begonnen am 27. Sep 2011 · letzter Beitrag vom 27. Sep 2011
Antwort Antwort
Jamah

Registriert seit: 2. Dez 2009
Ort: Nordhorn
74 Beiträge
 
RAD-Studio 2010 Arc
 
#1

Shellexecute Problem mit Copy

  Alt 27. Sep 2011, 13:46
Hi.
Also ich wollte 2 Dateien zusammen kopieren. Das hat auch per Konsole mit 'Copy /b' ganz gut geklappt.
Problem ist jetzt folgendes.
Diese Zeile ist dafür verantwortlich, dass das passiert:
Delphi-Quellcode:
if ShellExecute(Handle, 'open', 'cmd.exe', pWideChar('/C copy /b 1.txt + 2.txt '+SaveDialog1.FileName), pWideChar(Dir), sw_hide) >= 32 then
      ShowMessage(SysErrorMessage(GetLastError));
Und nun wirds vollkommen bescheuert:
Wenn ich das ganze im Debugger mache funktionierts manchmal (!). Wenn ich das aber ausserhalb der IDE aufrufe bekomme ich Code 42 zurück, unter GetLastError allerdings ein 'Der Vorgang wurde Erfolgreich ausgeführt'.
Was aber praktisch passiert ist, dass ich nur 1.txt an die stelle kopiert bekomme. (Und wirklich nur 1.txt, größe und MD5 bestätigen, dass es nur die eine datei ist).

Woran könnte das liegen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#2

AW: Shellexecute Problem mit Copy

  Alt 27. Sep 2011, 13:53
Relative Pfade sind böse.

Nutze absolute Pfade und es geht.


Und warum nicht einfach 2 bis 3 FileStreams, anstatt über diesen uralten DOS-Befehl?


PS: ShellExecute und PWideChar ist auch böse

ShellExecute + PChar + String
ShellExecuteA + PAnsiChar + AnsiString
oder
ShellExecuteW + PWideChar + WideString/UnicodeString
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Shellexecute Problem mit Copy

  Alt 27. Sep 2011, 14:04
Warum ist Copy ein uralt Befehl? Er gehört immer noch zur Konsole, wie damals zu DOS. Aber auch ich würde FileStreams nutzen oder eine Batch-Datei. Aber das in einem Delphi Programm mit Shellexecute und Copy umsetzen zu wollen ist unsinnig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Jamah

Registriert seit: 2. Dez 2009
Ort: Nordhorn
74 Beiträge
 
RAD-Studio 2010 Arc
 
#4

AW: Shellexecute Problem mit Copy

  Alt 27. Sep 2011, 14:06
Ahhh. Dummes Jamah.
Hätte man drauf kommen können...

Aber auch mit absoluten pfaden funktionierts nicht.

Plan B.
Also Datei in nen Stream krieg ich noch hin. Wie krieg ich 2 Streams hintereinander, also in einen?

Danke erstmal für eure Hilfe.

Geändert von Jamah (27. Sep 2011 um 14:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.620 Beiträge
 
Delphi 12 Athens
 
#5

AW: Shellexecute Problem mit Copy

  Alt 27. Sep 2011, 14:08
Schau Dir einmal Delphi-Referenz durchsuchenTStream.CopyFrom an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jamah

Registriert seit: 2. Dez 2009
Ort: Nordhorn
74 Beiträge
 
RAD-Studio 2010 Arc
 
#6

AW: Shellexecute Problem mit Copy

  Alt 27. Sep 2011, 14:31
Irgendwie versteh ichs nicht ganz.
Hab beide Files jetzt in nem Stream aber irgendwie krieg ich die nicht in einen.
Abgesehen davon versteh ich aber auch diese Seite nicht ganz.

Könnte das jemand genauer erklären oder ein Beispiel posten?
Danke
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.620 Beiträge
 
Delphi 12 Athens
 
#7

AW: Shellexecute Problem mit Copy

  Alt 27. Sep 2011, 14:38
Versuch es mal so (ungetestet):
Delphi-Quellcode:
procedure Glue(const Files: TStrings;const DestFileName: string);
var i: Integer;
    src, dest: TFileStream;
begin
  try
    dest := TFileStream.Create(DestFileName,fmCreate or fmOpenWrite or fmShareExclusive);
    try
      for i := 0 to Files.Count - 1 do
        begin
          src := TFileStream.Create(Files[i],fmOpenRead or fmShareDenyNone);
          try
            dest.CopyFrom(src,0);
          finally
            src.Free;
          end;
        end;
    finally
      dest.Free;
    end;
  except
    on E: Exception do
      MessageBox(0,PChar(E.Message),nil,MB_OK or MB_ICONERROR);
  end;
end;
In Files sind die Dateien zu übergeben, die Du "zusammenkleben" willst, und DestFileName bezeichnet den Namen der Zieldatei.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jamah

Registriert seit: 2. Dez 2009
Ort: Nordhorn
74 Beiträge
 
RAD-Studio 2010 Arc
 
#8

AW: Shellexecute Problem mit Copy

  Alt 27. Sep 2011, 15:03
Danke.
Funktioniert!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr.
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