AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallBack
Thema durchsuchen
Ansicht
Themen-Optionen

Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallBack

Ein Thema von dGeek · begonnen am 22. Sep 2016 · letzter Beitrag vom 25. Sep 2016
Antwort Antwort
dGeek
(Gast)

n/a Beiträge
 
#1

AW: Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallB

  Alt 23. Sep 2016, 11:16
Klappt wunderbar, Danke!
ich habe jetzt folgendes Konstrukt für den absoluten Notall:

Delphi-Quellcode:
// - versuche Datei mit BlockRead und BlockWrite zu "kopieren"
// - - wenn sofort ein Fehler auftritt und nicht "kopiert werden konnte DANN
// - - - "kopiere" Datei mit den seit Vista mitgelieferten IFileOperation-Funktionen
// - - geht das schief, gib einen Fehler aus
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#2

AW: Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallB

  Alt 25. Sep 2016, 14:30
Eine letzte Frage:
kann BlockRead und -Write auch Dateien mit überlangen Pfadnamen kopieren?
Denn soweit ich weiß können die IFileOperations Pfadnamen bis ~32.000 Zeichen kopieren.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallB

  Alt 25. Sep 2016, 16:22
BlockRead und BlockWrite ist der Dateiname egal, denn Lese-/Schreibvorgänge arbeiten nur mit dem FileHandle.

Und wenn man 'ne Datei mit UNC öffnet, dann geht es auch mit Pfaden länger als MAX_PATH.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#4

AW: Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallB

  Alt 25. Sep 2016, 16:27
Zitat:
Und wenn man 'ne Datei mit UNC öffnet, dann geht es auch mit Pfaden länger als MAX_PATH.
Das klingt zwar interessant aber...

was wäre denn der UNC-Pfad zu z.B. D:\verzeichnis1\datei1.txt ?

Soweit ich jetzt rausgefunden habe in etwa so..

\\Computername\D$\verzeichnis1$\datei1.txt

?

Geändert von dGeek (25. Sep 2016 um 16:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallB

  Alt 25. Sep 2016, 16:32
Bei Google suchenUNC -> erster Link -> https://de.wikipedia.org/wiki/Unifor...ale_Ressourcen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#6

AW: Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallB

  Alt 25. Sep 2016, 16:45
Meine stupide Lösung:

Delphi-Quellcode:
function getComputerName: string;
var
 Len: DWord;
begin
 Len := MAX_COMPUTERNAME_LENGTH + 1;
 SetLength(Result, Len);

 if Windows.getComputerName(PChar(Result), Len) then
  SetLength(Result, Len)
 else
  Result := '';
end;

function getUNCPath(aPath: string; aComputerName: string = ''): string;
var
 sTmp: string;
begin

 if aComputerName <> 'then
  sTmp := aComputerName
 else
  sTmp := getComputerName;

 Result := '\\' + sTmp + '\' + StringReplace(aPath, ':', '$');
end;

// Aufruf (bei einmaligem Aufruf)
showmessage( getUNCPath('D:\verzeichnis1\datei1.txt' );

// oder (bei mehreren Aufrufen in einer Schleife)
sComputerName := getComputer; // vor der Schleife

showmessage( getUNCPath('D:\verzeichnis1\datei1.txt', sComputerName ); // in der Schleife

// Vorher:
// D:\verzeichnis1\datei1.txt

// Nachher:
// \\DeinComputer\D$\verzeichnis1\datei1.txt
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#7

AW: Von BlockRead/BlockWrite wegkommen - IFileOperation steht bereit, aber kein CallB

  Alt 25. Sep 2016, 16:58
Wieso Computername rausfinden? Es geht nur um das Prefix \\?\.

Grüße
Dalai
  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 23:37 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