Autor Beitrag
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 24.08.07 16:25 
hi,

wie kann ich folgenden vb code in delphi übersetzen ?
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
    <StructLayout(LayoutKind.Sequential, Pack := 1)> _
    Public Structure SP_DEVICE_INTERFACE_DETAIL_DATA
      Public cbSize As UInt32
      <MarshalAs(UnmanagedType.ByValTStr, SizeConst := 256)> _
      Public DevicePath As String
    End Structure


ich denke mal das Pack := 1 zeigt an, dass es ein packed record ist, aber was ist das <MarshalAs usw. ?
Eine folständige Übersetzung dieses Schnippels wäre toll, danke ;)

mein bisheriger Ansatz ist dieser:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  TSP_DEVICE_INTERFACE_DETAIL_DATA = packed record
    cbSize: integer;
    DevicePath: string;
  end;


mfg
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 24.08.07 16:45 
Ich kann dir leider den Schnippsel nicht übersetzen, aber MarshalAs scheint ein Befehl in Verbindung mit .Net zu sein. Siehe hier. (Unter B3 Nicht isomorphe Parameter.)

grüße
arj
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 378

Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
BeitragVerfasst: Fr 24.08.07 17:31 
Der Device Path sollte vermutlich ein array[0..255of char sein
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 24.08.07 19:21 
ich werde es als string lassen, mir scheint als wenn das was darüber steht, dazu dient die umwandlung von array of char in string vorzunehmen, und ich denke, dass das mit dem string schon so ok ist.
Spätestens beim Testen werde ich feststellen obs stimmt, danke ;)


mfg
arj
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 378

Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
BeitragVerfasst: Fr 24.08.07 22:38 
Das würde ich nicht machen. Ich nehme an das du weißt, dass es da einen Signifikanten Unterschied gibt.
Der Delphi-String ist ähnlich dem VB-String und hat NICHTS mit dem Array of Char zu tun.
Aus dem Grund wird ja genau ein Marshalling gemacht wie du richtig erkannt hast.
Deine Variante wird deshalb zu Fehlern führen. String zu verwenden ist also definitiv falsch!
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 25.08.07 12:57 
aber im vb code steht doch string, wie soll ich es denn an anderen stellen machen, an denen string einfach so verwendet wird ?


mfg
arj
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 378

Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
BeitragVerfasst: Sa 25.08.07 16:31 
Eigentlich wird wohl immer ein Array of Char erwartet werden, weil Windows bzw. C/C++ das ja so will.

Bin übrigens grad auf ein holländisches Forum gestoßen, vielleicht kannst das brauchen:
www.nldelphi.com/for...0589&postcount=3