Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Prism Registry und DWORDs (https://www.delphipraxis.net/21047-registry-und-dwords.html)

MathiasSimmack 29. Apr 2004 09:10

Re: Registry und DWORDs
 
Haste nich´ ´ne Studentin, die das machen könnte? :mrgreen:

Assarbad 29. Apr 2004 10:23

Re: Registry und DWORDs
 
Ne du, hab ich net, aber ich kann es nach wie vor. Nur leider brauch ich dazu was ...

MathiasSimmack 15. Jun 2004 21:06

Re: Registry und DWORDs
 
Uralter Beitrag, aktuelles Problem:
Zitat:

Zitat von Robert_G
Das klingt nach einem verdammt guten Argument sein D8 auf den neuesten Stand zu bringen. :mrgreen:

Wenn es was bringen würde, dann wär´s noch besser. :cry:

Soll heißen: Ich habe mir das D8 Update #2 besorgt und installiert. Das Schreiben von DWords in die Registry nach dem o.g. Muster geht bei mir (D8 Pro) nach wie vor nicht. Ich bin erstaunt, dass es bei dir geklappt hat. Sollen die Unterschiede zwischen Pro- und Architektversion wirklich so groß sein?

Robert_G 16. Jun 2004 08:36

Re: Registry und DWORDs
 
Zitat:

Sollen die Unterschiede zwischen Pro- und Architektversion wirklich so groß sein?
Das glaube ich weniger. ;)
Da ich schon oft Problemchen mit lokalisierter Software hatte, besorge ich mir immer das Original. Im englischen D8 klappte es einwandfrei. (Ich teste es gleich nochmal...)

MathiasSimmack 16. Jun 2004 08:48

Re: Registry und DWORDs
 
Ich bin dir ja dankbar für deine Hilfe, und nimm´s bitte nicht persönlich ... aber wo siehst du denn hier:
Zitat:

Zitat von Robert_G
Delphi-Quellcode:
  reg.SetValue('DWORD_Val', Convert.ToInt32(ui));
  reg.SetValue('DWORD_Val', Int32(ui));
  reg.SetValue('DWORD_Val', ui);

Probleme mit der Lokalisierung? Das würde ja bedeuten, dass deutsche Borland-Team hat enorm in die Interna eingegriffen.

Robert_G 16. Jun 2004 09:11

Re: Registry und DWORDs
 
Liste der Anhänge anzeigen (Anzahl: 1)
Viele lokalisierte Programme bocken oft an Stellen, wo man es nicht vermutet (sonst wäre der Fehler schon früher gefunden worden ;) )

Zum Thema:
Es funktioniert einwandfrei.
Ich habe eben schnell was zusammengeklickt. Mit dem Schnipsel bekommst du den Wert und den Typ (dürfte in dem Fall immer Int32 sein ;) )

Delphi-Quellcode:
procedure TfrmTestReg.btnWrite_Click(sender: System.Object; e: System.EventArgs);
var
  reg :RegistryKey;
begin
  reg := Registry.CurrentUser.OpenSubKey('Software\TestReg', true);
  if txtRegWrite.Text.Trim = '' then
    reg.SetValue('Miep' , Int32.Parse(txtRegRead.Text))
  else
    reg.SetValue(txtRegWrite.Text.Trim , Int32.Parse(txtRegRead.Text.Trim));
end;

procedure TfrmTestReg.btnRead_Click(sender: System.Object; e: System.EventArgs);
var
  reg :RegistryKey;
  FetchedObj :System.Object;
begin
  reg := Registry.CurrentUser.OpenSubKey('Software\TestReg', false);
  if txtRegWrite.Text.Trim = '' then
    FetchedObj := reg.GetValue('Miep' , -1)
  else
    FetchedObj := reg.GetValue(txtRegWrite.Text.Trim , -1);

  txtRegRead.Text := FetchedObj.ToString;
  if FetchedObj.ToString <> '' then
    lblRegType.Text := FetchedObj.GetType.ToString
  else
    lblRegType.Text := '(null)';
end;
Edit: war wohl zu langsam, du hast es im anderen thread schon gelöst ;)

MathiasSimmack 16. Jun 2004 11:45

Re: Registry und DWORDs
 
Tja, ich bin ratlos. :(

Zitat:

Zitat von Robert_G
Es funktioniert einwandfrei.

Nicht bei mir.

Zitat:

Delphi-Quellcode:
procedure TfrmTestReg.btnWrite_Click(sender: System.Object; e: System.EventArgs);
var
  reg :RegistryKey;
begin
  reg := Registry.CurrentUser.OpenSubKey('Software\TestReg', true);
  if txtRegWrite.Text.Trim = '' then
    reg.SetValue('Miep' , Int32.Parse(txtRegRead.Text))
  else
    reg.SetValue(txtRegWrite.Text.Trim , Int32.Parse(txtRegRead.Text.Trim));
end;

scheitert nach wie vor an der Fehlermeldung: Es gibt keine Version von "SetValue", die man so aufrufen kann.

Ob bitte mal andere stolze (?) Besitzer von Delphi 8 Professional ausprobieren könnten, ob der o.g. Code funktioniert? Bei mir geht´s nicht. Der "Microsoft.Win32"-Namespaces muss unter uses eingebunden werden.

Robert_G 16. Jun 2004 12:11

Re: Registry und DWORDs
 
Zitat:

Zitat von MathiasSimmack
...scheitert nach wie vor an der Fehlermeldung: Es gibt keine Version von "SetValue", die man so aufrufen kann.

:?:

Der 2. Parameter von SetValue ist ein System.Object. Davon werden ALLE typen und Klassen abgeleitet (sogar Arrays!).
Ein Int32 sollte also IMMER passen...

there smells something extremely rotten in state of Borland :?

MathiasSimmack 16. Jun 2004 12:33

Re: Registry und DWORDs
 
Zitat:

Zitat von Robert_G
Der 2. Parameter von SetValue ist ein System.Object. Davon werden ALLE typen und Klassen abgeleitet (sogar Arrays!).

Ja, ich weiß. Und wie auf Seite #1 geschrieben: Bei Strings und String-Arrays habe ich absolut keine Probleme.

Zitat:

Ein Int32 sollte also IMMER passen...
Ich glaube dir ja. ;) Nur entweder mache ich was falsch (obwohl: Copy&Paste ... :?), oder ich habe eine besch**** Delphi-Version erwischt, oder die Pro-Version hat generell ein Problem damit. Darum ja auch die Frage an andere D8-Besitzer. @Alexander, Chakotay: Wo seid ihr?

Na ja, ich schreib mal eben eine Mail an den Kundendienst. Wenn die die Post wieder ignorieren, wie damals die Pienitz (oder wie die heißt), dann muss ich mal schauen wie man die Aufmerksamkeit von Borland bekommen kann. :evil:

MathiasSimmack 16. Jun 2004 14:53

Re: Registry und DWORDs
 
Gut, Problem erkannt; Gefahr gebannt.
Im DF schrieb ich gerade
Mensch, das war ein Krampf. Ich weiß jetzt warum es nicht ging. Oder sagen wir: Ich kenne die Ursache. Es gibt standardmäßig eine nicht dokumentierte Compileroption
Delphi-Quellcode:
{$AUTOBOX ON}
im Quelltext der Unit. In der Hilfe steht nichts dazu, aber Bei Google suchenGoogle brachte mich u.a. auf diese Seite, wo folgendes steht:
Zitat:

In the {$AUTOBOX ON} state, a simple type is compatible with that simple type, and TObject itself. Also, in a call to a procedure with an interface type parameter, an object is compatible with only any interface types it implements, provided that the declared procedure is not overloaded.

Nachzulesen hier.

Damit hätte sich das technische Problem zwar gelöst, aber dennoch bleibt ein bitterer Beigeschmack.
Ich schätze, da wird eine weitere Mail an den Kundendienst fällig werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.
Seite 2 von 3     12 3      

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