Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DLL - Probs mit Strings (https://www.delphipraxis.net/163529-dll-probs-mit-strings.html)

TERWI 3. Okt 2011 13:53

AW: DLL - Probs mit Strings
 
Hab mir die Dateien nun mal mit den PS-PAD im Hexeditor angesehen.

Mit den Daten aus der DLL-.11 erkenne ich folgendes:
String_1 hat 520 - 1 Byte (Tuner-Name)
String_2 hat 520 - 1 Byte (Capturer-Name)
String_3 hat 260 - 1 Byte (leer)
String_4 hat 260 - 1 Byte (Geräte-Name)
FE-Type ist ein Byte (passt auch zum Gerät)

Mit den Daten aus der DLL-.21 erkenne scheint das ähnlich.
Allerdings sehe ich da nirgendwo am Ende des Records eine Zahl für den FE-Type ....

Schon eom wenig eigenartig, das hier MAX_PATH mal mit 520 und dann mit 260 Zeichen verwendet wird.
Als Ansi-String kann ich das nicht wirklich erkennen.

himitsu 3. Okt 2011 13:58

AW: DLL - Probs mit Strings
 
Datei 1 ist so aufgebaut:
Code:
0000   'TechnoTrend BDA/DVB-S Tuner'#0
0104   #0
0208   'TechnoTrend BDA/DVB Capture'#0
030C  #0
0410   #0
0514   'TT-budget S2-3200'#0
0618   3


Offset 061A:
0000   'USB 2.0 BDA DVB-S Tuner'#0
0104   #0
0208   'USB 2.0 BDA DVB Capture'#0
030C  #0
0410   #0
0514   'TT-connect S-2400'#0
0618   2
Wenn ich Nachzähle, dann komm ich auf 6 Strings á 260 (MAX_PATH) AnsiChars und ein nachfolgendes WORD.
Die alte Version hat also einen String weniger.

Datei 2:
Code:
0000   'TechnoTrend BDA/DVB-S Tuner'#0
0104   #0
0208   'TechnoTrend BDA/DVB Capture'#0
030C  #0
0410   #0
0514   #0
0618   'TT-budget S2-3200'#0
071C  3

Offset 0AAC:
0000   'USB 2.0 BDA DVB-S Tuner'#0
0104   #0
0208   'USB 2.0 BDA DVB Capture'#0
030C  #0
0410   #0
0514   #0
0618   'TT-connect S-2400'#0
071C  2
Hier sind es 7 Strings á 260 (MAX_PATH) AnsiChars und das nachfolgende WORD.
Was genau deiner Deklaration entspricht.

Die 260 Stimmen also. (bzw. Meiner aus )


Zitat:

Schon eom wenig eigenartig, das hier MAX_PATH mal mit 520 und dann mit 260 Zeichen verwendet wird.
520 = 2 * 260 = 2 Strings und der Zweite ist leer :zwinker:

ANSI ist auch korrekt, denn bei Unicode würde jeweils eine #0 zwischen jedem einzelnen Buchstaben liegen und ein String wäre MAX_PATH * SizeOf(WideChar) = 520 Byte groß.

TERWI 3. Okt 2011 14:08

AW: DLL - Probs mit Strings
 
Tja, manschmal brauchts halt eben den Wink mit dem Baumstamm.....

Das mit den 389 war wohl eher ein Zufall, dass da was bei der .11 herauskam.

... und wenn man dann auch noch [0..MAX_PATH-1] zur Array-Deklaration schreibt, klappts auch mit der Ausgabe.

Wei oh wei oh wei ...

Danke dir für die Erleuchtung !


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:49 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz