Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datenübertragung PC -> PPC (https://www.delphipraxis.net/7988-datenuebertragung-pc-ppc.html)

ekladius 26. Aug 2003 11:51


Datenübertragung PC -> PPC
 
hi ho

ich möchte eine datei vom/zum desktop zum/vom pocket pc kopieren.

ich hab die rapi.pas von
Chris De Herrera's Windows CE Website
genommen.

hier funzt nur die DesktopToDevice und CeDeleteFile - function.
ich bekomme es einfach nich gebacken irgendwas mit CeCreateFile oder CeReadFile anzustellen.
hab schon überlegt, ob das mit streams oder so geht, aber ich komm net weiter.

kann mir jemand auf die sprünge helfen???

THX

Christian Seehase 29. Aug 2003 21:33

Re: Datenübertragung PC -> PPC
 
Moin Ekladius,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Ich kenn' mich jetzt zwar mit Pocket PCs nicht weiter aus, aber hast Du Dir mal das Beispiel unter Punkt 5 der von Dir genannten FAQs angeschaut?

Was funktioniert denn bei Dir nicht? Fehlermeldung/-code?

ekladius 2. Sep 2003 17:01

Re: Datenübertragung PC -> PPC
 
Hallo Christian,

schön dass Du Dich wenigstens meldest.
Den von Dir angesprochenen Punkt 5 betrifft sicherlich VB oder sowas.
Ich möchte das aber mit Delphi schaffen.

Mein code
Delphi-Quellcode:
unit copy;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Rapi;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1         : TForm1;
  HSrc,HDes    : THandle;
  Buffer       : Pointer;
  BytesToRead,
  BytesReading,
  BytesWritten : DWord;
  o1            : Poverlapped;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Source,Destination:PChar;

begin
  CeRapiInit;
  HSrc := CreateFile ('c:\test.txt',Generic_Read ,File_Share_Read ,nil,Open_Existing,0,0);
  HDes := CeCreateFile ('test.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);
[B] CeWriteFile  (HDes, Buffer^, BytesReading, BytesWritten, @o1);[/B]

  CloseHandle (HSrc);
  CeCloseHandle (HDes);
  CeRapiUnInit;
  end;
end.
wenn ich nun die ganze sache anschieben möchte bekomme ich folgenden fehler.
Delphi-Quellcode:
[Fehler] copy.pas(44): Inkompatible Typen: 'procedure, untyped pointer or untyped parameter' und 'Pointer'
[Fataler Fehler] Project1.dpr(6): Verwendete Unit 'copy.pas' kann nicht compiliert werden
irgendetwas klappt nicht mit den pointer.
setze ich ein @ vor den pointer dann geht es soweit das das file auf dem pocket erstellt wird, aber ohne inhalt.
wenn ich das ganze auf einer normalen umgebung laufen lasse, allso alles ohne ce (cereadfile) dann klappts auch, aber eben nicht richtung pocket oder pc.
selbst ein CeGetFileSize vom pocket pc funzt es wird aber nichts gelesen.

Ich hoffe Du kannst mir nen Tipp zu der fehlermeldung geben.

besten Dank im Voraus

Christian Seehase 2. Sep 2003 18:36

Re: Datenübertragung PC -> PPC
 
Moin Ekladius,

könntest Du bitte noch einmal markieren, welches die betroffene Zeile ist?
Mit der Angabe "Zeile 44" kann ich sonst nicht so recht was anfangen ;-)

BTW: Ich verschieb' den Thread mal nach "Sonstiges"

ekladius 2. Sep 2003 19:18

Re: Datenübertragung PC -> PPC
 
Hallo Christian


ich wollt die zeile fett machen, nun steht ein [b] davor egal.
jedenfalls meckert der compiler nich wenn ich vor buffer^ ein @ setze.
es passiert einfach nix. was mach ich falsch?? bin halt ein doofie.

dank schön für Deine bemühungen

achso ich hab den quellcode noch ordentlich gestellt, ändert aber nichts am problem. :freak:

Christian Seehase 2. Sep 2003 19:37

Re: Datenübertragung PC -> PPC
 
Moin Ekladius,

ich hab's mal für die lokale Anwendung (also ohne die CeXXXX Funktionen) umgebaut, und ein wenig verändert.
Wichtigster Unterschied:
Ich hab' mal die Overlapped Angaben in ReadFile und WriteFile weggenommen.

Schau's Dir doch mal in Ruhe an. (und Denk, wenn's denn funktioniert, dran, die entsprechenden Funktionen wieder mit dem Präfix Ce zu versehen ;-) )

Delphi-Quellcode:
var
  hsrc  : DWORD;
  hdes  : DWORD;
  Buffer : Pointer;
  BytesToRead : DWORD;
  BytesReading : DWORD;
  BytesWritten : DWORD;
  dwSize      : DWORD;

begin
  HSrc := CreateFile ('c:\test.txt',Generic_Read ,File_Share_Read ,nil,Open_Existing,0,0);
  HDes := CreateFile ('c:\test2.txt',Generic_Write,File_Share_Write,nil,Create_Always,0,0);
  try
    dwSize := GetFileSize(HSrc,nil);
    Buffer := AllocMem(dwSize);
    try
      BytesToRead := GetFileSize (HSrc, nil);
      ReadFile   (HSrc, Buffer^, BytesToRead, BytesReading, nil);
      WriteFile  (HDes, Buffer^, BytesReading, BytesWritten, nil);
    finally
      FreeMem(Buffer,dwSize);
    end;
  finally
    CloseHandle (HSrc);
    CloseHandle (HDes);
  end;
end;

ekladius 3. Sep 2003 07:35

Re: Datenübertragung PC -> PPC
 
Morgen Christian

tja Dein code funzt, genau wie meiner vorher.
aber wenn ich aus writefile ein cewritefile mache dann meckert der compie wieder über
"inkompatible typen 'procedure, untyped pointer or untyped parameter' und 'pointer'".
ich bekomm bald nen anfall.

trotzdem schönen dank

ekladius 3. Sep 2003 07:38

Re: Datenübertragung PC -> PPC
 
:lol: HALLO CHRISTIAN :lol:

Ich habs geschafft :idea:

ich habb jetzt bei cewritefile vor den buffer ein @ gesetzt das sieht dann so aus @buffer^ .
zwei wochen lange suche hat ein ende. jaaaaaaaaa


VIELEN DANK!!!!!!!! :party:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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