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, 10: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 11:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 10: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Mai 2011 um 11: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, 11: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 11:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 11: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Mai 2011 um 11: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, 11: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
43.168 Beiträge
 
Delphi 12 Athens
 
#6

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 11:50
Die WinAPI kannte das aber damals schon und ob Bytes oder Chars, das stand bestimmt auch damals schon im MSDN/PSDK
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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, 12: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 12:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 13: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, 13: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

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

AW: [Fehler] Registry Einträge abgeschnitten

  Alt 29. Mai 2011, 14: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 21:49 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