| |
|
|
| Irre ich mich oder konnte Copy mal von UNCs ala \serverfolderfile kopieren - was jetzt mit X10 nicht mehr geht?! Vlt. wg. der Neuerung seit X9 mit den Dateiattributen?
FileExists und assign hingegen haben kein Problem... |
|
|
| |
|
|
|
RGH | Während ich früher den Copy in Delphi selbst geschrieben hatte, so benutze ich wegen der Attributgeschichte seit 9.x die Windows-API. Das mag diese Änderung erklären. Bei Assign, etc. baue ich immer noch auf solide Handarbeit. ;) Daher solltest Du mit BlockRead/BlockWrite einen Zweizeiler hinbekommen, der das Copy mit alten Qualitäten (und Unzulänglichkeiten bezüglich der Attribute) hinbekommt.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.10.2006 ▲ |
|
|
|
|
| Jupp hab ich hab mir grad hierfür nen fcopy geschrieben: KompilierenMarkierenSeparieren
proc fcopy(from$,to$)
casenot fileexists(from$) : return false
var fmode&:=get("FileMode")
set("FileMode",2)
var fh&:=assign(from$)
if fh&
openrw fh&
var siz&:=getfilesize(fh&)
if siz&
declare mem#
dim mem#,siz&
var bytesRead&:=blockread(fh&,mem#,0,siz&)
closerw fh&
fh&:=assign(to$)
openrw fh&
blockwrite fh&,mem#,0,bytesRead&
closerw fh&
dispose mem#
else
closerw fh&
fh&:=assign(to$)
openrw fh&
closerw fh&
endif
assign fh&,""
endif
set("FileMode",fmode&)
return true
endproc
Klappt nun wieder bestens.
<offtopic> KompilierenMarkierenSeparieren
proc FCOPY
PARAMETERS FROM$,TO$
IFNOT FILEEXISTS(FROM$)
RETURN 0
ENDIF
VAR FMODE&=GET("FileMode")
SET("FileMode",2)
VAR FH&=ASSIGN(FROM$)
IF FH&
OPENRW FH&
VAR SIZ&=GETFILESIZE(FH&)
IF SIZ&
DECLARE MEM#
DIM MEM#,SIZ&
VAR BYTESREAD&=BLOCKREAD(FH&,MEM#,0,SIZ&)
CLOSERW FH&
FH&=ASSIGN(TO$)
OPENRW FH&
BLOCKWRITE FH&,MEM#,0,BYTESREAD&
CLOSERW FH&
DISPOSE MEM#
ELSE
CLOSERW FH&
FH&=ASSIGN(TO$)
OPENRW FH&
CLOSERW FH&
ENDIF
ASSIGN FH&,""
ENDIF
SET("FileMode",FMODE&)
RETURN 1
endproc
</offtopic> |
|
|
| |
|
|
|
RGH | ... und mit der erweiterten Funktionalität von XProfan 10 für BlockWrite/BlockRead geht es noch dfeutlich kürzer bei exakt gleicher Funktionalität: KompilierenMarkierenSeparieren Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.10.2006 ▲ |
|
|
|
|
| Dim mem#,0 führt doch aber zum Absturz... ^^
Irgendwie glaube ich dennoch mir bei jeder Zeile meiner Programmierungen etwas dabei gedacht zu haben ^^
Die Set-Geschickte hast Du auch ausser Acht gelassen - sind die Bemühungen in meiner Proc unnütz?
Dein FCopy ist dank der neuen XProfan10-Funktionalitäten (welche ich wohl erst alle noch inne haben muß) trotzdem schicker. |
|
|
| |
|
|
|
Jörg Sellmeyer | Hab ich jetzt eigentlich irgendwas verpasst? KompilierenMarkierenSeparieren David hat das Var auch schon des öfteren benutzt und ich dachte, das sei ein XPSE-Feature. Aber wenns der Scheff selber schon benutzt Die Hilfe sagt jedenfalls nichts dazu... Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 25.10.2006 ▲ |
|
|
|
|
| Probieren geht über studieren. |
|
|
| |
|
|
|
RGH | [quote:c5a4b2e81b=iF]Dim mem#,0 führt doch aber zum Absturz... ^^[/quote:c5a4b2e81b] Das sollte zwar nicht zum Absturz führen, aber ich erweitere meinen Code oben entsprechend.
[quote:c5a4b2e81b]Die Set-Geschickte hast Du auch ausser Acht gelassen[/quote:c5a4b2e81b] Habe ich nicht. Das mit dem Filemode macht aber schon BlockRead selbst.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.10.2006 ▲ |
|
|
|
|
| Du meinst ein Blockwrite schreibt auch wenn zuvor ein nur Lesen mit Set(FileMode... gesetzt ist? |
|
|
| |
|
|
|
RGH | [quote:3bb5d4f872=iF]Du meinst ein Blockwrite schreibt auch wenn zuvor ein nur Lesen mit Set(FileMode... gesetzt ist?[/quote:3bb5d4f872] Ja, BlockWrite(Datei) setzt den Filemode temporär auf 2 und anschließend wieder zurück. Bei BlockRead(Datei) setze ich ihn allerdings auf Nur Lesen, um auch schreibgeschützte Dateien lesen zu können!
Nachtrag: Das gilt natürlich nur bei den Varianten, wo es um ganze Dateien geht! Ansonsten muß der FileMode vom Programmierer gesetzt werden, bevor er die Datei mir OpenRW öffnet.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.10.2006 ▲ |
|
|
|
|
| Ok verstehe.
Dein obiges Beispiel ist aber immer noch nicht ganz korrekt ^^ - Dateien mit der Größe von 0 Byte werden nicht kopiert... *duck* |
|
|
| |
|
|
|
Jörg Sellmeyer | [quote:1fed0361f8=iF]Probieren geht über studieren. [/quote:1fed0361f8] Ist das was Geheimes oder was? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 25.10.2006 ▲ |
|
|
|