Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Bug in der Commctrl.pas von Borland? (https://www.delphipraxis.net/78652-bug-der-commctrl-pas-von-borland.html)

Luckie 8. Okt 2006 23:59


Bug in der Commctrl.pas von Borland?
 
Ich nutze die Funktion ListView_GetItemTextW aus der commctrl.pas von Borland. Gut, dass es mit der Unicode-Unterstützung nicht weit her ist, ist ja bekannt. Aber icl6 Personal dabei. Also habe ich mir die Funktion mal angeguckt:
Delphi-Quellcode:
function ListView_GetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  pszText: PWideChar; cchTextMax: Integer): Integer;
var
  Item: TLVItemW;
begin
  Item.iSubItem := iSubItem;
  Item.cchTextMax := cchTextMax;
  Item.pszText := pszText;
  Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Longint(@Item));
end;
Das kann ja nicht funktionieren. Benutzt wird die WideChar Version der TLVItem Struktur. Gesendet wird aber die Ansi-Version der Nachricht LVM_GETITEMTEXT. Da fehlt also ein W am Ende. LVM_GETITEMTEXTW muss es heißen und dann funktioniert das ganze auch.

Bei ListView_SetItemTextW übrigens das gleiche:
Delphi-Quellcode:
function ListView_SetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  pszText: PWideChar): Bool;
var
  Item: TLVItemW;
begin
  Item.iSubItem := iSubItem;
  Item.pszText := pszText;
  Result := Bool( SendMessage(hwndLV, LVM_SETITEMTEXT, i, Longint(@Item)) );
end;
Was soll denn das? :shock:

TKC 9. Okt 2006 02:52

Re: Bug in der Commctrl.pas von Borland?
 
hi,

also bei mir steht da :

Delphi-Quellcode:
Result := SendMessageW(hwndLV, LVM_GETITEMTEXTW, i, Longint(@Item));
und

Delphi-Quellcode:
Result := Bool( SendMessageW(hwndLV, LVM_SETITEMTEXTW, i, Longint(@Item)) );

uligerhardt 9. Okt 2006 06:33

Re: Bug in der Commctrl.pas von Borland?
 
In meinen D7-VCL-Quellen wird auch noch LVM_SETITEMTEXT ohne W verwendet. Das wurde vermutlich in D2005 oder -6 geändert. Bei Google finde ich allerdings nichts dazu.

himitsu 9. Okt 2006 09:00

Re: Bug in der Commctrl.pas von Borland?
 
Da es ja nicht allzuviele dieser Nachrichtenkonstanten gibt, welche mit A und W existieren, werden die es einfach vergessen haben.

Genau dieses ist auch der grund, warum ich bei meinen Definitionen die Funktionsn/Typen ohne diese Angabe, welche dann auf A, oder W umgeleitet werden konseuent weglasse, damit muß man A und W angeben und entdeckt derartige Fehler sofort. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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