Autor |
Beitrag |
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 24.08.07 16:25
hi,
wie kann ich folgenden vb code in delphi übersetzen ?
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:
Delphi-Quelltext 1: 2: 3: 4:
| TSP_DEVICE_INTERFACE_DETAIL_DATA = packed record cbSize: integer; DevicePath: string; end; |
mfg
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: 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
      
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
|
Verfasst: Fr 24.08.07 17:31
Der Device Path sollte vermutlich ein array[0..255] of char sein
|
|
F34r0fTh3D4rk 
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: 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
      
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
|
Verfasst: 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 
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: 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
      
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
|
Verfasst: 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
|
|
|