AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pfad zum mobilen Gerät

Ein Thema von Brakeman · begonnen am 5. Sep 2007 · letzter Beitrag vom 6. Nov 2007
Antwort Antwort
Brakeman

Registriert seit: 23. Sep 2003
43 Beiträge
 
#1

Pfad zum mobilen Gerät

  Alt 5. Sep 2007, 19:16
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!
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#2

Re: Pfad zum mobilen Gerät

  Alt 5. Sep 2007, 19:25
Mobile Geräte haben (wenn sie sich nicht als Wechseldatenspeicher anmelden) keinen Pfad im lokalen Dateisystem.

Stichwort wäre hier RAPI.

In der aktuellen Toolbox ist ein Bericht, ansonsten findet Google auch einiges.

Hier gibt es eine fertige Unit.
Robert Wachtel
  Mit Zitat antworten Zitat
Brakeman

Registriert seit: 23. Sep 2003
43 Beiträge
 
#3

Re: Pfad zum mobilen Gerät

  Alt 5. Sep 2007, 20:32
Danke für den RAPI-Tipp. Ich habe die genannte rapi.pas jetzt mal in mein Projekt eingebunden und versuche folgendes:

Delphi-Quellcode:
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;
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.
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#4

Re: Pfad zum mobilen Gerät

  Alt 5. Sep 2007, 20:43
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: http://www.google.de/search?q=delphi+rapi+copyfile liefert auch noch einige brauchbare Ergebnisse.
Robert Wachtel
  Mit Zitat antworten Zitat
Brakeman

Registriert seit: 23. Sep 2003
43 Beiträge
 
#5

Re: Pfad zum mobilen Gerät

  Alt 5. Sep 2007, 21:38
Ich habe nochmal etwas probiert und gesucht. Rausgekommen ist das hier:

Delphi-Quellcode:
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;
Die Datei auf dem PPC wird auch angelegt, aber ohne Inhalt. Weiss einer weiter?
  Mit Zitat antworten Zitat
msysteme

Registriert seit: 6. Nov 2007
Ort: Bergheim
2 Beiträge
 
Delphi XE3 Enterprise
 
#6

Re: Pfad zum mobilen Gerät

  Alt 6. Nov 2007, 21:36
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.
Alles wird gut. Delphi kann alles. Glaubt mir
  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 07:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz