AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Wo ist hier der Fehler beim kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wo ist hier der Fehler beim kopieren

Ein Thema von Popov · begonnen am 19. Sep 2012 · letzter Beitrag vom 19. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

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

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 13:13
Das mit dem Auswerten der boolischen Ausdrücke kann man auch partiell (zeilen-/befehlsweise) umstellen.

Aber dann schon eher so:
Result := CopyFile(PChar(SourceFile), PChar(DestFile), True) and Result;

Nja, warum es nicht geht: Frag mal deinen Debugger ... der weiß das.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 13:47
@Bernhard Geyer

Dass Delphi es nicht weiter verfolgt wenn das Ergebnis klar steht, weiß ich, nur bisher dachte ich, dass es nur für IF Abfragen gilt.

Trotzdem erscheint es mir unlogisch, denn dann klappt keine Opperation wie x := y and z, wenn y False ist.


@p80286

"funktioniert nicht" bedeutet, dass es nicht kopiert wird.


@DeddyH

if not CopyFile(PChar(SourceFile), PChar(DestFile), True) then Result := false;

ergibt aber nur das Resultat des einen Vorgangs. Hier will ich aber mehrere Vorgänge kombinieren


@himitsu

Result := CopyFile(PChar(SourceFile), PChar(DestFile), True) and Result;

klappt leider auch nicht.


Letztendlich kriege ichd as schon hin, nur wird es dann nicht so schön aussehen in einer Zeile.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 13:51
Sind die Zieldateien bereits vorhanden? In dem Fall wäre klar, wieso nicht kopiert wird. Allerdings bin ich nicht sicher, ob ich überhaupt verstanden habe, was Du erreichen willst.
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
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.087 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 13:58
@Bernhard Geyer

Dass Delphi es nicht weiter verfolgt wenn das Ergebnis klar steht, weiß ich, nur bisher dachte ich, dass es nur für IF Abfragen gilt.

Trotzdem erscheint es mir unlogisch, denn dann klappt keine Opperation wie x := y and z, wenn y False ist.
Was erwartest du denn, welchen Wert x annimmt, wenn y false ist?
Wenn y false ist, kann dieses false durch ein nachgeschaltetes "and" nicht mehr verändert werden. Also wird die Verarbeitung hier abgebrochen und das false an x übergeben.
Was ist daran unlogisch?
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 14:30
Ok, dann langsam

CopyFile gibt als Rückgabewert ein TRUE wenn Kopiervorgang erfolgreich war, ein FALSE wenn nicht.

Gerade ist mir eine kleiner Gedankenfehler aufgefallen, so dass der Code in der Form für mich ein falsches Ergebnis liefert, was aber korrigiert werden kann und den Code nicht per se falsch macht. Mich interessiert es wenn mindestens ein FALSE vorkommt, der Code hier (und das ist der Fehler) aber erfast mindestens ein TRUE.

Ignorieren wir das aber mal kurz und gehen davon aus, dass ich mindestens einen erfolgreichen Kopiervorhang erfassen will.

Mit dem Code Result := Result and CopyFile(...) sollte ich einige Kopiervorgänge zusammenfassen könne. Wenn Result am Anfang FALSE ist und ein Vorgang TRUE, sollte Result nun TRUE sein. Bei der Schleife reicht also mindestens ein TRUE von CopyFile, damit Result immer TRUE enthält.

Unabhängig meines Gedankenfehlers scheint der Code dennoch nicht zu funktionieren, denn dazu müsste CopyFile ausgeführt werden und das macht es anscheinend nicht.

Denn egal ob im Zielverzeichnis Daten sind oder nicht, es wird nie kopiert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 14:33
Wenn Result am Anfang FALSE ist und ein Vorgang TRUE, sollte Result nun TRUE sein.
OR?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 14:34
Das und dann würde ich mal mit GetLastError ermitteln, wieso da nicht kopiert wird.
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
Popov
(Gast)

n/a Beiträge
 
#8

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 14:55
Das und dann würde ich mal mit GetLastError ermitteln, wieso da nicht kopiert wird.
Vielen Dank, das ist wahrscheinlich die richtige Antwort auf meine Nebenfrage.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 14:35
Hi,

dass er nicht kopiert, wenn Result vorab false ist, wurde ja bereits erklärt. Für deine Abfrage wäre vermutlich "or" die richtige Wahl, denn da muss er jeden Wert einzeln prüfen und entsprechend die hinterstehenden Funktionen (in deinem Fall CopyFile) ausführen.

Also Result := Result or CopyFile(...) Edit: Zu langsam
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wo ist hier der Fehler beim kopieren

  Alt 19. Sep 2012, 14:24
@Trotzdem erscheint es mir unlogisch, denn dann klappt keine Opperation wie x := y and z, wenn y False ist.
Wieso?
Wenn Y False ist, dann kann Z sein was es will, bei AND kommt dann immer nur FALSE bei raus, also kann man da auch gleich aufhören und mu nicht weitergucken.
Dabei ist es natürlich egal, ob das Ergebnis dieser Auswertung als Parameter verwendet, an eine Variable zugewiesen oder in einem IF/CASE verwendet wird.

Und nein das wird natürlich bei sämtlichen booleanischen Auswertungen so gemacht.
Wäre ja sonst ein inkonsistentes Verhalten, wenn es nicht so wäre.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:28 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