AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Key abfrage

Ein Thema von EWeiss · begonnen am 6. Okt 2008 · letzter Beitrag vom 6. Okt 2008
Antwort Antwort
Seite 2 von 2     12   
EWeiss
(Gast)

n/a Beiträge
 
#11

Re: Key abfrage

  Alt 6. Okt 2008, 12:27
Zitat:
Mein Code bestand genau aus der hier geposteten Zeile, die Funktion habe ich ansonsten bisher noch nicht benötigt.
Und da war es auch korrekt
Da ich nicht abfragen will ob der status schon mal gedrückt war sondern nur welcher aktuell ist.
Aber trotz alledem funktioniert es nicht.

Unter Basic hab ich kein problem mit dem oben geposteten code schnipsel

gruss Emil
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#12

Re: Key abfrage

  Alt 6. Okt 2008, 15:04
Zitat von EWeiss:
Unter Basic hab ich kein problem mit dem oben geposteten code schnipsel
Der Code entspricht dem folgenden:

if GetAsyncKeyState(33) and 128 = 128 then Alternativ:

if GetAsyncKeyState(33) < 0 then
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

Re: Key abfrage

  Alt 6. Okt 2008, 15:45
Zitat von Roachford:
Zitat von EWeiss:
Unter Basic hab ich kein problem mit dem oben geposteten code schnipsel
Der Code entspricht dem folgenden:

if GetAsyncKeyState(33) and 128 = 128 then Alternativ:

if GetAsyncKeyState(33) < 0 then
Ich habe aber ein Problem damit gut ist ein Sample von dir.
Warum muss ich hier eine IF abfrage stellen ich übergebe doch den wert

Delphi-Quellcode:
function IsKeyDown(CheckKey: Integer): SmallInt;
begin
    result := (GetAsyncKeyState(CheckKey) and 15);

end;

function IsLButtonDown: Integer;
begin
    Result := IsKeyDown(1);

end;
IsLButtonDown übergibt den wert 1 und ich erwarte von meiner Funktion die rückgabe wie der status ist
also in dem Fall

result := (GetAsyncKeyState(1) and 15); Wie sollte es deiner meinung nach funktionieren ?
result := (GetAsyncKeyState(1) and 128); ? Ich brauche doch die IF abfrage nicht..
Oder wir reden aneinander vorbei
Danke für deine Hilfe .. habs vergessen

gruss Emil
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#14

Re: Key abfrage

  Alt 6. Okt 2008, 18:09
Du hast alle deine Funktionen mit einem SmallInt bzw. Integer versehen.

Delphi-Quellcode:
function IsLButtonDown: Integer;
begin
  Result := IsKeyDown(1);
end;
Solche Funktionen sind überhaupt nicht aussagekräftig und macht es einem um so schwerer dir zu helfen. Mit was wird denn das Result nach dem Aufruf verglichen? Mit 14? 55? 42? oder gleich mit Random(MaxInt)?

Was willst du denn nun eigentlich haben? Doch eigentlich ein boolsches Ergebnis, oder nicht? Wenn ja, dann einfach die IF Abfrage komplett auf eine einzeilige Evaluierung umstellen, da die IF Abfrage einen boolschen Ausdruck braucht, ist das einfach gemacht:

Delphi-Quellcode:
function IsLButtonDown: boolean;
begin
  result := ( GetAsyncKeyState(VK_LBUTTON) and 128 ) <> 0;
end;
Alternativen:
Delphi-Quellcode:
function IsLButtonDown: boolean;
begin
  result := ( GetAsyncKeyState(VK_LBUTTON) and 128 ) = 128;
end;
Delphi-Quellcode:
function IsLButtonDown: boolean;
begin
  result := GetAsyncKeyState(VK_LBUTTON) < 0;
end;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Key abfrage

  Alt 6. Okt 2008, 18:34
Hallo,

nur am Rande bemerkt: 1 shl 15 <> 128

Gruß Hawkeye
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

Re: Key abfrage

  Alt 6. Okt 2008, 18:49
@Roachford
Zitat:
Solche Funktionen sind überhaupt nicht aussagekräftig und macht es einem um so schwerer dir zu helfen. Mit was wird denn das Result nach dem Aufruf verglichen? Mit 14? 55? 42? oder gleich mit Random(MaxInt)?
Was ist da nicht aussagekräftig ?
Delphi-Quellcode:
function IsKeyDown(CheckKey: Integer): SmallInt;
begin
    result := (GetAsyncKeyState(CheckKey) and 15);

end;

function IsLButtonDown: Integer;
begin
    Result := IsKeyDown(1);
    // 1 <<<<<<< selbe wie VK_LBUTTON davon der aktuelle status zurück geliefert
    // was ist da nicht verständlich.. hmm
end;
Solche veralteten Methoden(variablen) wie Boolean wirst du in PowerBasic nicht mehr finden.
Aber egal trotzdem danke für deine Hilfe.

gruss Emil
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#17

Re: Key abfrage

  Alt 6. Okt 2008, 19:50
Zitat von Hawkeye219:
nur am Rande bemerkt: 1 shl 15 <> 128
Shit, da habe ich ja vollkommen falsch gerechnet. Vielen Dank, Hawkeye219!

Zitat von EWeiss:
Was ist da nicht aussagekräftig ?
Delphi-Quellcode:
function IsKeyDown(CheckKey: Integer): SmallInt;
begin
    result := (GetAsyncKeyState(CheckKey) and 15);

end;

function IsLButtonDown: Integer;
begin
    Result := IsKeyDown(1);
    // 1 <&lt;&lt;&lt;&lt;&lt;&lt; selbe wie VK_LBUTTON davon der aktuelle status zurück geliefert
    // was ist da nicht verständlich.. hmm
end;
Daran ist vor allem nicht aussagekräftig, dass IsKeyDown() einen SmallInt und IsLButtonDown einen Integer zurückliefert. Also wird eine Zahl zurück geliefert - und mit was wird der Rückgabewert verglichen? Von mir aus beachten wir nur die Funktion IsLButtonDown(), da die andere darin aufgerufen wird. Und für die Funktion (IsLButtonDown()) hast du niemals in diesem Thread einen Aufruf gepostet. Mit anderen Worten, ich weiss nicht, mit was du den Rückgabewert der Funktion vergleichst (siehe Beitrag zuvor: 42?, Random(MaxInt)?). Somit ist es undurchsichtig, unverständlich[b] und machen es einfach schwer, dir direkt zu helfen.

Zitat von EWeiss:
Solche veralteten Methoden(variablen) wie Boolean wirst du in PowerBasic nicht mehr finden.
Ich habe selber jahrelang auch PowerBasic programmiert und ich weiss dies, aber was (zum Teufel) hat nun auf einmal PowerBasic mit dem ganzen Thread zu tun? Ich denk du willst das ganze in Delphi machen und nicht in PowerBasic. Was denn nun? Bist du dir überhaupt einig was du machen willst? PowerBasic oder Delphi? Willst du den Code richtig machen (Boolean) oder einfach nur rumfrickeln (SmallInt auf Integer erweitern lassen und dann mit dem Wert x vergleichen)?

Und um nochmal auf den richtigen Einwand von Hawkeye219 einzugehen, ersetze in den Codes von mir bitte die 128 mit 32768. Danke!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#18

Re: Key abfrage

  Alt 6. Okt 2008, 20:07
Zitat:
ersetze in den Codes von mir bitte die 128 mit 32768. Danke!
Das benötige ich nicht.
Mich interessiert letztendlich nur der positive oder negative wert.
da reicht ein vergleich auf < 0 .. völlig aus

Einen schönen Abend noch und Danke für die Hilfe.

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 06:13 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