AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit CopyFile

Ein Thema von Berni68 · begonnen am 4. Sep 2016 · letzter Beitrag vom 6. Sep 2016
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

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

AW: Problem mit CopyFile

  Alt 5. Sep 2016, 13:31
Mich würde noch interessieren was diese mysteriöse Funktion `ForceDirectories` macht.
Moin Olli, da kann ich weiterhelfen: http://docwiki.embarcadero.com/Libra...rceDirectories
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
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: Problem mit CopyFile

  Alt 5. Sep 2016, 13:46
Mich würde noch interessieren was diese mysteriöse Funktion `ForceDirectories` macht.
Moin Olli, da kann ich weiterhelfen: http://docwiki.embarcadero.com/Libra...rceDirectories
Dank dir! Dann hätte ich ein Problem mit der Verwendung der Funktion seitens des Fragestellers. Ich zitiere mal:

Zitat:
ForceDirectories gibt den Wert True zurück, wenn es alle notwendigen Verzeichnisse erstellt hat, und False, wenn das Verzeichnis nicht erstellt werden konnte.
Fehlt da nicht was im uns präsentierten Code? Stichwort: defensive Softwareentwicklung?!
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Problem mit CopyFile

  Alt 5. Sep 2016, 13:54
Strenggenommen müsste man den Rückgabewert von ForceDirectories abfragen und entsprechend reagieren.

Sollte im konkreten Fall beim Aufruf der Funktion ein Fehler auftreten, dann kracht es halt irgendwo im späteren Ablauf der Routine.

Wirklich sauber ist es so, wie es ist nicht, aber auch ein Scheitern von ForceDirectories und die daraus resultierenden Probleme dürften nicht dazu führen, dass sich ein Programm einfach sang- und klanglos verabschiedet.

Da muss irgendwo noch was anderes gewaltig schiefgehen, was aber so aus der Ferne nicht zu erkennen ist.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Problem mit CopyFile

  Alt 5. Sep 2016, 13:55
Was Assarbad meint: Der Rückgabewert von ForceDirectories sollte geprüft und eine entsprechende Fehlermeldung ausgegeben werden, wenn sie fehlschlägt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Problem mit CopyFile

  Alt 5. Sep 2016, 14:04
Nichts anderes wollte ich ausdrücken, wobei selbst das Nichtabfragen des Rückgabewertes und das Fehlen einer entsprechenden Reaktion darauf, nicht zu dem beschriebenen "Verabschieden des Programmes" führen dürfte.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#6

AW: Problem mit CopyFile

  Alt 5. Sep 2016, 14:43
Nichts anderes wollte ich ausdrücken, wobei selbst das Nichtabfragen des Rückgabewertes und das Fehlen einer entsprechenden Reaktion darauf, nicht zu dem beschriebenen "Verabschieden des Programmes" führen dürfte.
Jupp, meine Argumentation war auch eher an den Fragesteller gerichtet, der nicht zu begreifen scheint, wie der Code zeigt, daß man Fehler nur durch disziplinierte und systematische Vorgehensweise finden kann.

Und ich stimme dir zu, ein stilles "Verabschieden" ist in der Tat ungewöhnlich. Ist es ketzerisch wenn ich jetzt den Fragesteller frage wie das ganze unter einem Debugger aussieht?

@Berni68: schonmal in der Windows-Ereignisanzeige nachgeschaut ob du da eine WER-Meldung siehst? Oder hast du möglicherweise WER abgeschaltet? Dann würde ich es auf jeden Fall mal aktivieren.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Problem mit CopyFile

  Alt 5. Sep 2016, 15:48
Ist es ketzerisch wenn ich jetzt den Fragesteller frage wie das ganze unter einem Debugger aussieht?
Naja, er hat geschrieben, dass er das Programm für eine Firma in der er nicht mehr arbeitet programmiert. Von extern ... wo es wahrscheinlich schwierig sein wird mit einem Debugger zu arbeiten.

@TE: Wie verhält sich das Programm wenn du es auf einem anderen Rechner startest? Die Quelldateien und die Struktur kann man ja mal testweise dort anlegen.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#8

AW: Problem mit CopyFile

  Alt 5. Sep 2016, 14:01
Wirklich sauber ist es so, wie es ist nicht, aber auch ein Scheitern von ForceDirectories und die daraus resultierenden Probleme dürften nicht dazu führen, dass sich ein Programm einfach sang- und klanglos verabschiedet.

Da muss irgendwo noch was anderes gewaltig schiefgehen, was aber so aus der Ferne nicht zu erkennen ist.
Du hast recht. Aber das Problem ist, daß man auf diese Weise nie das Problem finden wird.

Ich habe kein Delphi installiert, aber wie sähe es denn mit etwas in dieser Richtung hier aus?

Delphi-Quellcode:
function TJobServerForm.VerschiebeEntsprechendEndung(maske: String): Boolean;
var
  files: TStrings;
  i: Integer;
  ziel, zielpfad: String;
begin
  result := False;
  files:= TStringList.Create;
  GetFilesMatchInPath(LokalPdfDir, maske, files, false); // Rückgabewert?
  try
    for i:=0 to files.Count-1 do
    begin
      try
        memo.Lines.Add(IntToStr(i+1) + '/' + IntToStr(files.Count)+ ' ' + files[i]);
        zielpfad:= WithBackSlash(PdfDir) + ExportSubDirFromFileName(files[i]);
        if not DirectoryExists(zielpfad) then
        begin
          if not ForceDirectories(zielpfad) then
            RaiseLastOSError;
        end;
        ziel:= zielpfad + ExtractFileName(files[i]);
        if CopyFile(PChar(files[i]), PChar(ziel), false) then
        begin
          if not DeleteFile(files[i]) then
            RaiseLastOSError;
          result := True;
        end;
      except
        RaiseLastOSError;
      end;
    end;
  finally
    files.Free;
  end;
end;
Ich verstehe zwar noch immer nicht, wozu das "try ... except RaiseLastOSError; end;" gut sein soll, aber nen Grund wird es sicher haben.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  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 14:52 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