Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Taste in Byte umwandeln als Funktion - Taste kommt aus ini (https://www.delphipraxis.net/89864-taste-byte-umwandeln-als-funktion-taste-kommt-aus-ini.html)

Michael94 7. Apr 2007 12:50


Taste in Byte umwandeln als Funktion - Taste kommt aus ini
 
Ich hoffe mal, ich hab die richtige Kategorie erwischt.

Ich will aus einer ini eine Taste auslesen, diese mittels Funktion in ein Byte umwandeln und dann zurücksenden.
Irgendwie klappt das nicht.

OnFormCreate: (geht)
Delphi-Quellcode:
left := ini.ReadString('scrolling', 'left1', '');

Auslöseevent: (hat bis zum Einbau der Funktion geklappt)
Delphi-Quellcode:
keyleft := transkey(left);
Keybd_Event(keyleft,0,0,0);
Keybd_Event(keyleft,0,KEYEVENTF_KEYUP,0);
Funktion:
Delphi-Quellcode:
function transkey(inikey: string):byte;
var
  return : byte;
begin
if inikey = 'VK_DOWN' then return := $28;
end;
Fehlermeldung:
Delphi-Quellcode:
[Error] test.pas(202): Incompatible types: 'String' and 'Integer'
Der Cursor beleibt beim Auslöseevent hinter transkey(left) stehen.

Da ich mich bis heute noch nie mit Funktionen auseinandergesetzt habe ist das bestimmt nur eine Verständnissache, da ich einfach noch zu doof in diesem Bereich bin.

Gruber_Hans_12345 7. Apr 2007 12:56

Re: Taste in Byte umwandeln als Funktion - Taste kommt aus i
 
zeig mal die dekleration von keyleft her, diese muß als integer deklariert sein

Michael94 7. Apr 2007 13:14

Re: Taste in Byte umwandeln als Funktion - Taste kommt aus i
 
Die habe ich global als byte gesetzt, da ich sie an mehreren Stellen brauche.

Integer hat auch nichts gebracht, gleicher Fehler

DGL-luke 7. Apr 2007 13:24

Re: Taste in Byte umwandeln als Funktion - Taste kommt aus i
 
Hallo, ich würd das so machen:

Delphi-Quellcode:
//schreiben
Ini.WriteInteger('section','key',Ord(SomeVKKeyVar));
//lesen
Ord(VKKey) := Ini.ReadInteger('section','key',Ord(VK_SOME_DEFAULT_KEY_CONSTANT)) //Ord ist doch ein Typecast, oder?

Hawkeye219 7. Apr 2007 13:27

Re: Taste in Byte umwandeln als Funktion - Taste kommt aus i
 
Hallo Michael,

Left ist eine Integer-Eigenschaft des Formulars. Wahrscheinlich hast du eine (globale?) String-Variable mit gleichem Namen vereinbart, die in diesem Fall nicht berücksichtigt wird. Vielleicht kannst du einmal ein größeres Code-Stück mit der fehlerhaften Stelle zeigen.

Deine Funktion transkey wird übrigens kein definiertes Ergebnis liefern. Der Rückgabewert wird in Delphi über die (vordefinierte) Variable Result festgelegt:

Delphi-Quellcode:
function transkey(inikey: string):byte;
begin
  if inikey = 'VK_DOWN' then
    Result := $28
  else // immer vorsehen, damit das Ergebnis nicht undefiniert ist
    Result := 0;
end;
Gruß Hawkeye

Michael94 7. Apr 2007 19:56

Re: Taste in Byte umwandeln als Funktion - Taste kommt aus i
 
Vielen Dank euch allen, es war das böse "left" das man nicht benutzen sollte...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 Uhr.

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