AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [non VCL] - Fehler bei WM_GETTEXT
Thema durchsuchen
Ansicht
Themen-Optionen

[non VCL] - Fehler bei WM_GETTEXT

Ein Thema von Rastaman · begonnen am 12. Okt 2005 · letzter Beitrag vom 13. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#1

[non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 00:33
Nabend.
Also ich habe einen Dialog in einer Resource, den ich dann lade.
Inhalt: Edit, Button, Listbox.
Jetzt war mein eigentliches Ziel mit der Listbox experimentieren, allerdings wurde daraus nix, da ich den Text aus dem Edit irgendwie nicht bekomme. Die ID vom Edit ist 102, und obwohl der Code keinen Sinn macht, funktioniert er nicht. Das Edit ist danach leer

Delphi-Quellcode:
function DlgFunc(hwnd: HWND; uMsg: UINT; wParam: WPARAM;
                 lParam: LPARAM): Bool; stdcall;
var
  s: PAnsiChar;
begin
  Result := True;
  if uMsg = WM_COMMAND then
  begin
    if HiWord(wParam) = BN_CLICKED then
      if LoWord(wParam) = 3 then
      begin
        edit := GetDlgItem(hwnd, 102);
        SendMessage(edit, WM_GETTEXT, 0, Integer(@s));
        SendMessage(edit, WM_SETTEXT, 0, Integer(@s));
      end;
  end
  else
    Result := False;
end;
Nix is ok - non VCL oh weh
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
muRR
(Gast)

n/a Beiträge
 
#2

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 00:44
Da du offensichtlich mit Dialogen arbeitest, solltest du auch MSDN-Library durchsuchenSendDlgItemMessage verwenden. Probier's mal aus.
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#3

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 00:51
Delphi-Quellcode:
        SendDlgItemMessage(hwnd, 102, WM_GETTEXT, 0, Integer(@s));
        SendDlgItemMessage(hwnd, 101, LB_ADDSTRING, 0, Integer(@s));
Es wird ein Eintrag hinzugefügt in der Listbox(ID = 101), aber der ist immer leer

//Edit: Grad gesehen:

Zitat:
Using SendDlgItemMessage is identical to retrieving a handle to the specified control and calling the SendMessage function.
Heisst: Die Funktionen entscheiden sich bis auf die Parameter nicht...
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
muRR
(Gast)

n/a Beiträge
 
#4

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 01:15
Das oben war auch nur ein Formalhinweis. Dein Fehler liegt hier:

MSDN-Library durchsuchenWM_GETTEXT

Zitat:
wParam
Specifies the maximum number of TCHARs to be copied, including the terminating null character.

Windows NT/2000/XP:ANSI applications may have the string in the buffer reduced in size (to a minimum of half that of the wParam value) due to conversion from ANSI to Unicode.
Du hast 0 angegeben.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 01:45
Auch Edits und Listboxen werden in meinen Tutorials behandelt, warum liest du sie nicht einfach mal?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#6

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 02:00
Ja das hat ich auch schon ausprobiert aber da kommt ab 8 Zeichen immer der Error Code 216.
In der Hilfe steht dann

Zitat:
The image file %1 is valid, but is for a machine type other than the current machine.
Image file
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 02:43
Wenn du einen PChar nimmst, dann solltest du vorher mal Speicher reservieren.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: PChar;
begin
  GetMem(s, length(Edit1.Text)+1);
  try
    SendMessage(Edit1.Handle, WM_GETTEXT, length(Edit1.Text)+1, Integer(@s[0]));
    ShowMessage(s);
  finally
    FreeMem(s, length(Edit1.Text)+1);
  end;
end;
Und damit du genau weißt, wie viel Speicher du brauchst, guckst du vorher mit MSDN-Library durchsuchenWM_GETTEXTLENGTH wie lang der Text im Edit ist.

Und noch ein heißer Tipp: Lad dir das PSDK runter: http://www.microsoft.com/downloads/d...displaylang=en Da kannst du imme rmal schenll die Parameter nachschlagen. Selbst ich weiß nie, wie rum die Parameter bei WM_GETTEXT gehören.

Noch was: Für Dialoge gibt es auch spezielle Dialog-Funktionen, die einem das Leben einfacher machen. Hier wäre das zum Beispiel: MSDN-Library durchsuchenGetDlgItemText.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 10:57
Zitat von Gerrit89:
Ja das hat ich auch schon ausprobiert aber da kommt ab 8 Zeichen immer der Error Code 216.
... und wollen wir wetten, daß dies ein Laufzeitfehler von Delphi und nicht ein Windows-Fehlercode ist?!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 12:29
Stimmt. 216 ist nämlich die Access Violation und die kommt, weil du für deinen PChar keinen Speicher alloziierst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#10

Re: [non VCL] - Fehler bei WM_GETTEXT

  Alt 12. Okt 2005, 19:19
Probier ich gleich ma aus. Hab vergessen Prog und Dialog zu speichern
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:43 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