AGB  ·  Datenschutz  ·  Impressum  







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

[Fehler] Registry Einträge abgeschnitten

Ein Thema von Smith87 · begonnen am 29. Mai 2011 · letzter Beitrag vom 11. Jul 2011
Antwort Antwort
Seite 1 von 2  1 2      
Smith87

Registriert seit: 29. Mai 2011
2 Beiträge
 
#1

[Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 11:50
Hallo zusammen,

ich möchte, dass sich mein Programm auf Wunsch des Users zwecks Autostart in die Registry einträgt.
Das bewerkstellige ich genau nach der Anleitung von Luckie: http://www.delphipraxis.net/2588-arb...tregistry.html.

Der Aufruf sieht folgendermaßen aus:

WriteStringToRegAPI('Software\Microsoft\Windows\CurrentVersion\Run','MeinProgramm',ParamStr(0));

Der Wert des erzeugten Schlüssels ist ber immer genau nach dem 6. Zeichen abgeschnitten, ich frag mich warum?! Wäre für einen Tipp sehr dankbar.

Liebe Grüße,
Smith

Geändert von Smith87 (29. Mai 2011 um 12:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#2

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 11:56
Wie sieht WriteStringToRegAPI aus?
ups

..., (Length(p_sValue)+1) * SizeOf(Char)); Ein Unicodeproblemchen?

Aber am Einfachste wird es sein, wenn du über TRegistry gehts (antatt Luckies NonVCL-Code) ... kannst ja Luckies Beispiel als Vorlage nehmen, aber ich glaube es gab auch schon etwas in unserer CodeLib.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Mai 2011 um 12:03 Uhr)
  Mit Zitat antworten Zitat
Smith87

Registriert seit: 29. Mai 2011
2 Beiträge
 
#3

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 12:11
Erstmal danke für die schnelle Antwort
Ich würde ungern für für einen einzigen Aufruf die ganze TRegistry mitschleppen. Ich schau mal, ob ich das mit dem Unicode in den Griff bekommen.


Edit: Ja, das war es! Danke =)

Geändert von Smith87 (29. Mai 2011 um 12:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#4

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 12:21
Solange die Units SysUtils und Classes eh schon eingebunden ist, sollte TRegistry keinen so großen Overhead mitschleppen.


@Minireg.pas: vermutlich die selben Unicodeprobleme, wie beim Luckie, da dort ebenfalls die Größe des Chars nicht beachtet wird.
Der entsprechende Schreibcode sieht jedenfalls fast genauso aus.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Mai 2011 um 12:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 12:45
Also ich das damals geschrieben habe, war Unicode in Delphi noch in weiter Ferne.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#6

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 12:50
Die WinAPI kannte das aber damals schon und ob Bytes oder Chars, das stand bestimmt auch damals schon im MSDN/PSDK
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 13:46
Moment mal:
Delphi-Quellcode:
function TMpuRegistry.ReadStringW(const ValueName: WideString;
  var Value: WideString): LongInt;
var
  cbData: Integer;
  lpType: DWORD;
  Buffer: PWideChar;
begin
  // get size of required data
  result := RegQueryValueExW(FhkResult, PWideChar(ValueName), nil, @lpType, nil,
    @cbData);
  if cbData <> 0 then
  begin
    GetMem(Buffer, cbData);
    try
      result := RegQueryValueExW(FhkResult, PWideChar(ValueName), nil, @lpType,
        Pointer(Buffer), @cbData);
      Value := Buffer;
    finally
      FreeMem(Buffer);
    end;
  end;
end;
Da sind doch schon die Unicode Versionen drin. Oder funktionieren die unter Delphi 2009 nicht?

OK, die Ansi Versionen crashen natürlich, weil ich keinen AnsiString benutzt habe:
Delphi-Quellcode:
function TMpuRegistry.ReadString(const ValueName: string; var Value: string):
  LongInt;
var
  cbData: Integer;
  lpType: DWORD;
  Buffer: PChar;
begin
  // get size of required data
  result := RegQueryValueEx(FhkResult, PChar(ValueName), nil, @lpType, nil,
    @cbData);
  if cbData <> 0 then
  begin
    GetMem(Buffer, cbData);
    try
      result := RegQueryValueEx(FhkResult, PChar(ValueName), nil, @lpType,
        Pointer(Buffer), @cbData);
      Value := Buffer; // <- hier AccessViolation
    finally
      FreeMem(Buffer);
    end;
  end;
end;
Und das meinte ich mit "in weiter Ferne".
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (29. Mai 2011 um 13:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 14:33
OK, die Ansi Versionen crashen natürlich, weil ich keinen AnsiString benutzt habe:
Nein, das müsste so sogar gehen, da die Registry-Funktionen mit Größen in Byte arbeiten. Deshalb sollte das mit GetMem richtig gehen, und zwar egal, ob du diesen Code mit einer Unicode-Version von Delphi ausführst oder nicht. Denn einmal wird das ganze halt als Unicode benutzt, einmal nicht.

Um diese Funktionen geht es aber gar nicht. Siehe Link im ersten Beitrag. Dort benutzt du Length beim schreiben und das geht natürlich nicht mit Unicode.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 14:43
Moment. Ich plädiere auf unschuldig. Der Autor ist Christian Seehase. Ich habe das damals nur in die Codelib aufgenommen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 15:08
Ich habe das damals nur in die Codelib aufgenommen.
Dann kannst du es ja auch gleich korrigieren.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 20:08 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