Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

FileCompare/XCopyFile/CopyFile


2 replies to this topic

Eagle

Eagle
  • Full Members
  • 79 posts

Posted 10 June 2003 - 13:03

Hallo,

Ich benutze IS7SP2 Englisch.
Bei folgender Funktion erhalte ich bei einigen Dateien, welche ich vergleiche den Fehler -1.
SRCDIR verweist z.B. auf F:\Test und TARGETDIR auf C:\Test. F ist ein Serverlaufwerk.
Die Dateien lassen sich mit dem Explorer kopieren. Auf C sind die Dateien nicht vorhanden.

szSrcFile = Datei1.exe
szTargetFile = Datei1.exe

nFileCompare = FileCompare ( SRCDIR ^ szSrcFile , TARGETDIR ^ szTargetFile , COMPARE_DATE );

if nFileCompare != 2 then

nCopy = CopyFile ( szSrcFile, szTargetFile);
endif;

Hat jemand eine Idee, warum dieser Aufruf nicht funktioniert? nCopy = -2147024809

Vielen Dank
unsure.gif
Ciao Thomas

Eagle

Eagle
  • Full Members
  • 79 posts

Posted 10 June 2003 - 15:15

Habe den Fehler gefunden.

Ich habe mehrere Dateien kopiert ( über 100) und Statusupdate(ON,AnzahlderDateien) gesetzt. Bei 100 %, also 100 Dateien hat InstallShield "falscher Parameter" zurückgeliefert, da die Statusanzeige nicht aktualisiert werden konnte.

ph34r.gif

Viele Grüße
Ciao Thomas

Christof

Christof
  • Members
  • 56 posts

Posted 26 June 2003 - 08:44

Hallo,
ich weiß nicht ob Du es gelöst hast, aber ich hatte mal ein fast gleiches Problem - bei mir waren es nur wesentlich mehr Dateien.
Ich ermittle die Anzahl der Dateien im Vorfeld und schreibe sie in eine Liste so etwa wie:

SRCDIR = svQuelle;
lMyList = ListCreate(STRINGLIST);
nFind = FindAllFiles ( SRCDIR , "*.*" , svFile , RESET );
while nFind=0
ListAddString(lMyList1, svFile, AFTER);
nItem = nItem + 1;
nFind = FindAllFiles ( SRCDIR , "*.*" , svFile ,CONTINUE );
endwhile;

Dann habe ich die Anzahl der Elemente in nItem und eine Liste aller Dateien. Das kann man dann noch ggf. auf andere Verzeichnisse ausdehnen.

Am Ende dann eine Schleife über alle Elemente. Eine Variable i wird hochgezählt und die aktuelle Prozentzahl kann errechnet werden

i = i + 1;
Posx = (i *100) / nItemp;
SetStatusWindow (Posx, @ID_MYMSG);

...

Gruß
Christof