AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Unicode-Probleme bei GetDeviceInfoList
Thema durchsuchen
Ansicht
Themen-Optionen

Unicode-Probleme bei GetDeviceInfoList

Ein Thema von juelin · begonnen am 30. Mai 2016 · letzter Beitrag vom 30. Mai 2016
Antwort Antwort
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#1

Unicode-Probleme bei GetDeviceInfoList

  Alt 30. Mai 2016, 13:48
Hallo zusammen,
ich habe ein Problem und weiß nicht weiter.
Ich habe ein Programm, welches Laser ansteuert (Lumax und Netlase).
Wenn ich das mit Delphi 7 laufen lasse läuft alles.
Mit Embarcado XE5 bekomme ich bei der DEVLIST komische Zeichen.
Hier ein Programmauszug:
Delphi-Quellcode:
  s:=LW_CreateDeviceInfoList(adev);
  if s = 0 then
  begin
    Preturn:=0;
    if adev > 0 then
    begin
      Preturn:=2;
      ldr1:=@DevLists;
      num:=1;
      ldr2:=@num;
      s:=LW_GetDeviceInfoList(ldr1, ldr2);
      if s = 0 then
      begin
        Preturn:=0;
        for x:=0 to adev-1 do
        begin
          te1:='';
          l:=Length(DevLists.wdevlists[x].SerialNumber.wsernum);
          m:=1;
          for a:=0 to l-1 do
          begin
            te3:=DevLists.wdevlists[x].SerialNumber.wsernum[a];
            if te3 = chr(0) then
            begin
              m:=0;
            end;
            if m = 1 then
            begin
              te1:=te1+te3;
            end;
          end;
// hier sollte in te1 'LX2UUK05' stehen
// bei XE5 steht hier '塌唲䭕㔰'#$12'廜盟楍楮畬慭⁸楌桧⁴'
        end;
      end;
    end;
  end;
Kann mir da jemand helfen?
Danke und Gruß
Jürgen
Jürgen Linder

Geändert von TBx (30. Mai 2016 um 14:01 Uhr) Grund: Delphi-Tags gesetzt, nächstes mal bitte selber machen. MfG TBx
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Code-Probleme

  Alt 30. Mai 2016, 13:55
Hallo,

in Delphi XE5 ist ein Char ein 2 Byte Zeichen.
Daher hilft es vielleicht char mit ansiChar auszutauschen.

In Delphi 7 ist ein 1 Byte Zeichen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#3

AW: Code-Probleme

  Alt 30. Mai 2016, 14:34
Jo, sieht nach dem beliebten Unicode-Problem aus, was man in den Richtlinien nachlesen kann, welche zum Delphi 2009 von Codegear/Embarcadero rausgegeben wurden.

Zitat:
Delphi-Quellcode:
for a:=0 to l-1 do
begin
  te3:=DevLists.wdevlists[x].SerialNumber.wsernum[a];
  if te3 = chr(0) then
  begin
    m:=0;
  end;
  if m = 1 then
  begin
    te1:=te1+te3;
  end;
end;
m?
Delphi-Quellcode:
for a:=0 to l-1 do
begin
  te3:=DevLists.wdevlists[x].SerialNumber.wsernum[a];
  if te3 = #0 then
    Break;
  te1:=te1+te3;
end;
aber eigentlich wohl eher
te1:=DevLists.wdevlists[x].SerialNumber.wsernum;
oder
te1:=PAnsiChar(@DevLists.wdevlists[x].SerialNumber.wsernum);
je nachdem, wie wsernum definiert ist.


Grob drüber geschaut und ohne Kenntnis der Header, würde ich denken das wäre der eigentlich "nur" nötig Code,
zuzüglich der nötigen Anpassungen wegen des Unicodes.
Delphi-Quellcode:
if LW_CreateDeviceInfoList(adev) = 0 then
begin
  Preturn:=0;
  if adev > 0 then
  begin
    Preturn:=2;
    num:=1;
    if LW_GetDeviceInfoList(@DevLists, @num) = 0 then
    begin
      Preturn:=0;
      for x:=0 to adev-1 do
      begin
        //te1:=PAnsiChar(@DevLists.wdevlists[x].SerialNumber.wsernum);
        te1:=DevLists.wdevlists[x].SerialNumber.wsernum;
        ...
      end;
    end;
  end;
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (30. Mai 2016 um 14:47 Uhr)
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Code-Probleme

  Alt 30. Mai 2016, 16:47
ja genau das war es.
Danke Klaus01
Jürgen Linder
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 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