![]() |
Pfad zum mobilen Gerät
Hallo,
ich möchte per Delphi-Programm eine Datei vom PC auf meinen PDA kopieren. Dazu benötige ich jedoch den Pfad zum "mobilen Gerät". Bei meiner Suche im Forum bin ich auf die Methode SHGetSpecialFolder gestoßen, leider erfährt man in diesen Threads nur etwas zu den Pfaden auf dem PC (Eigene Dateien usw.). Kann mir jemand helfen, wie ich den Pfad zum mobilen Gerät ermitteln kann? Danke! |
Re: Pfad zum mobilen Gerät
|
Re: Pfad zum mobilen Gerät
Danke für den RAPI-Tipp. Ich habe die genannte rapi.pas jetzt mal in mein Projekt eingebunden und versuche folgendes:
Delphi-Quellcode:
Leider ohne Erfolg. Es passiert rein gar nichts. Die Quelldatei existiert, jedoch bin ich mir nicht sicher, wie ich bei der Funktion die Zieldatei angebe.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls,ShellAPI, rapi; ... CeRapiInit; CeCopyFile('c:\temp\test.txt','\My Documents\Privat\test.txt',TRUE); CeRapiUnInit; |
Re: Pfad zum mobilen Gerät
Das ist ja auch die Methode zum Kopieren von Dateien innerhalb des mobilen Geräts... ;)
Auf der genannten Seite findet sich auch unter Punkt 5 der Hinweis auf CeReadFile und CeWriteFile mit entsprechenden Beispielen aus dem SDK. Ob und was sich da u.U. seit Erscheinen des Artikels geändert hat, müsstest Du aber selbst im genannten MSDN-Link nachschlagen. // Edit: ![]() |
Re: Pfad zum mobilen Gerät
Ich habe nochmal etwas probiert und gesucht. Rausgekommen ist das hier:
Delphi-Quellcode:
Die Datei auf dem PPC wird auch angelegt, aber ohne Inhalt. Weiss einer weiter?
procedure TForm1.SpeedButton4Click(Sender: TObject);
var HSrc,HDes : THandle; Buffer : Pointer; BytesToRead, BytesReading, BytesWritten : DWord; o1 : Poverlapped; begin Buffer:=nil; CeRapiInit; HSrc := CreateFile ('c:\temp\test.txt',Generic_Read ,File_Share_Read ,nil,Open_Existing,0,0); HDes := CeCreateFile ('\My Documents\Privat\test9.txt',Generic_Write,File_Share_Write,nil,Create_Always,0,0); GetMem (Buffer, GetFileSize (HSrc, Buffer)); BytesToRead := GetFileSize (HSrc, Buffer); ReadFile (HSrc, Buffer^, BytesToRead, BytesReading, @o1); CeWriteFile (HDes, @Buffer^, BytesReading, BytesWritten, @o1); CloseHandle (HSrc); CeCloseHandle (HDes); CeRapiUnInit; end; |
Re: Pfad zum mobilen Gerät
Hi,
hier der Code funktioniert! procedure TForm1.CopyPCtoCE(PCfromFile: PChar; CEtoFile: PWideChar); var hsrc : DWORD; hdes : DWORD; Buffer : Pointer; BytesToRead : DWORD; BytesReading : DWORD; BytesWritten : DWORD; dwSize : DWORD; begin CeRapiInit; HSrc := CreateFile (PCFromFile,Generic_Read ,File_Share_Read ,nil,Open_Existing,0,0); HDes := CECreateFile(CEtoFile,Generic_Write,File_Share_Wri te,nil,Create_Always,0,0); try dwSize := GetFileSize(HSrc,nil); Buffer := AllocMem(dwSize); try BytesToRead := GetFileSize (HSrc, nil); ReadFile(HSrc, Buffer^, BytesToRead, BytesReading, nil); CEWriteFile(HDes, @Buffer^, BytesReading, BytesWritten, nil); finally FreeMem(Buffer,dwSize); end; finally CECloseHandle (HDes); CloseHandle (HSrc); CeRapiUnInit; end; end; procedure TForm1.Button1Click(Sender: TObject); begin CopyPCtoCE('c:\d7cover.jpg','\my documents\d7cover.jpg'); end; Aber besser noch die Variante: CE nach PC passt gut auf habe mich richtig reingehangen. procedure TForm1.CopyCEtoPC(CEfromFile: PWideChar; PCtoFile: PChar); var hsrc : DWORD; hdes : DWORD; Buffer : Pointer; BytesToRead : DWORD; BytesReading : DWORD; BytesWritten : DWORD; dwSize : DWORD; begin CeRapiInit; HSrc := CECreateFile (CEfromFile,Generic_Read ,File_Share_Read ,nil,Open_Existing,0,0); HDes := CreateFile(PCtoFile,Generic_Write,File_Share_Write ,nil,Create_Always,0,0); try dwSize := CEGetFileSize(HSrc, nil); // @Buffer^ wenn dann ist es nur dieser Pointer Buffer := AllocMem(dwSize); try BytesToRead := CEGetFileSize (HSrc, nil); //@Buffer^ CEReadFile(HSrc, @Buffer^, BytestoRead, BytesReading, nil); WriteFile(HDes, Buffer^, BytesReading, BytesWritten, nil); finally FreeMem(Buffer,dwSize); end; finally CECloseHandle (HSrc); CloseHandle (HDes); CeRapiUnInit; end; end; Ich bin neu hier und hoffen auch mal geholfen zu haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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