Autor Thema: Pocket PC Übertragung - Rapi  (Gelesen 2140 mal)

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Pocket PC Übertragung - Rapi
« am: 27.07.07 - 19:27:37 »
Moin,moin alle zusammen,

hoffe jemand von euch hat ein wenig Erfahrung in diesem Bereich.

Ich möchte mit dem Quellcode von Microsoft http://support.microsoft.com/kb/307256 einen Datenaustausch zwischen PC und Pocket PC durchführen. In Office konnte ich den Quellcode umsetzen.

Jetzt versuche ich den Quellcode in einen Agenten unter Notes einzubauen. Die Verbindung zu dem PPC funktioniert. Allerdings meckert folgender Code in der markierten Zeile, wegen "illegal referenze to an array".

Public Sub RAPICopyPCFileToCE(Byval PCSourceFile As String, _
Byval CEDestFile As String)
   
   Dim iFile As Integer
   Dim bytFile() As MyType
   Dim Datei As myType
   Dim lCeFileHandle As Long
   Dim BytePos As Long
   Dim lBufferLen As Long
   Dim TotalCopied As Long
   Dim lBytesWritten As Long
   Dim lResult As Long
   
    'Get bytes from PC file.
   iFile = Freefile
   Open PCSourceFile For Binary Access Read As iFile
   Redim bytFile(Lof(iFile))
   Get iFile,, bytfile
   Close iFile
   
    'Create a file on the CE Device and write
    ' the bytes from the PC file to it.
   lCeFileHandle = RapiOpenFile(CEDestFile, 2, _
   True, FILE_ATTRIBUTE_NORMAL)
   
   If lCeFileHandle <> INVALID_HANDLE_VALUE Then
      BytePos = 0
      
        'Copy this many bytes at a time (MUST BE EVEN #).
      lBufferLen = 2048
      Do
         If Ubound(bytFile) - TotalCopied > lBufferLen Then
                ' Copy the next set of bytes
            lResult = CeWriteFile(lCeFileHandle, bytFile(BytePos), _
            lBufferLen, lBytesWritten, 0&)
            
            TotalCopied = TotalCopied + lBytesWritten
                ' Unicode compensation.
            BytePos = BytePos + (lBufferLen \ 2)
         Else
                ' Copy the remaining bytes if greater than 0
            lBufferLen = Ubound(bytFile) - TotalCopied
            If lBufferLen > 0 Then
                    ' Copy remaining bytes at one time.
               lResult = CeWriteFile(lCeFileHandle, _
               bytFile(BytePos), lBufferLen, lBytesWritten, 0&)
               
            End If
            TotalCopied = TotalCopied + lBytesWritten
            Exit Do
         End If
      Loop
   Else
        'CeCreateFile failed.  Why?
      Select Case CeGetLastError
      Case ERROR_FILE_EXISTS
         Msgbox "A file already exists with the specified name."
      Case ERROR_INVALID_PARAMETER
         Msgbox "A parameter was invalid."
      Case ERROR_DISK_FULL
         Msgbox "Disk if Full."
      Case Else
         Msgbox "An unknown error occurred."
      End Select
   End If
   
   lResult = CeCloseHandle(lCeFileHandle)
End Sub


MyType =

Public Type MyType
   value As Integer
End Type

Probiere jetzt schon seit Stunden und kriegs nicht gebacken. Das Höchste der Gefühle ist eine erstellte Datei, mit der man nichts anfangen kann. Der Dateiname besteht aus ???????t und sie lässt sich weder auf dem PPC noch auf dem PC öffnen.

Weiß jemand wie man das umgehen kann?

Gruß
Demian
Gruß
Demian

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Pocket PC Übertragung - Rapi
« Antwort #1 am: 30.07.07 - 09:04:06 »
Hallo,
schau Dir mal die Hilfe von der Funktion get an, der 3. Parameter darf kein Array sein. Du musst deine Binäre-Quelle anders initiieren / einlesen.

bubble
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Pocket PC Übertragung - Rapi
« Antwort #2 am: 03.08.07 - 16:26:01 »
Moin Bubble,

das in der Hilfe habe ich gesehen, aber ich weiß nicht wie ich das umgehen kann. Habe aber auch festgestellt, dass bei der umgekehrten Übertragung (Ce->PC) der Dateiname in Unicode umgewandelt werden muss.

In Excel funktioniert das mit strconv(Dateiname,vbunicode) wobei vbunicode der Zahl 64 entspricht. In Notes habe ich habe ich kein entsprechendes Gegenstück gefunden. Kann man in Notes den Typ string in Unicode umwandeln?

Gruß
Demian
Gruß
Demian

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Pocket PC Übertragung - Rapi
« Antwort #3 am: 03.08.07 - 16:36:48 »
Schau dir mal die Funktionen UString, Uni und UChr an, mir fehlt ehrlicherweise das Beispiel zum Testen.
Wegen der Datei, es gibt seit Notes 6 auch die NotesStream-Klasse zum schreiben und lesen von Dateien (ist etwas an Java angelehnt). Bei der NotesStream-Klasse kannst Du beim Erzeugen den Zeichensatz angeben, also "utf-8" usw.

bubble
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Pocket PC Übertragung - Rapi
« Antwort #4 am: 03.08.07 - 17:13:33 »
Moin Bubble,

auf die 3 Funktionen bin ich auch gestoßen, aber keine führt zum gewünschten Ergebnis. Das mit der Notestream scheint auch etwas komplexer zu sein. Im Beispiel für Charset sind dann noch Klassen wie NotesMIMEEntity und NotesMIMEHeader. Muss mir das mal in Ruhe ansehen, weil ich ja den kompletten Code entsprechend ändern muss.

Ich glaube es ist einfacher, wenn ich diese ganze Geschichte vorerst in Excel lasse und in Notes lediglich einen Agenten schreibe, der im Hintergrund die Excelfunktionen startet.

Trotzdem vielen Dank für deine Hilfe ich werde sicherlich noch darauf zurückgreifen.

Gruß
Demian
« Letzte Änderung: 03.08.07 - 17:16:02 von Demian »
Gruß
Demian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz