AGB  ·  Datenschutz  ·  Impressum  







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

Warum hier Zugriffsverletzung?

Ein Thema von Chewie · begonnen am 27. Jul 2004 · letzter Beitrag vom 27. Jul 2004
Antwort Antwort
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#1

Warum hier Zugriffsverletzung?

  Alt 27. Jul 2004, 15:04
Ich habe hier die Definition einer Funktion:

Delphi-Quellcode:
function ChangeServiceConfig2(hService: SC_HANDLE; dwInfoLevel: DWord;
  lpInfo: Pointer): BOOL; stdcall;

type
  _SERVICE_DESCRIPTIONA = packed record
    lpDescription: PChar;
  end;
  TServiceDescriptionA = _SERVICE_DESCRIPTIONA;
  PServiceDescriptionA = ^TServiceDescriptionA;

  _SERVICE_DESCRIPTIONW = packed record
    lpDescription: PWChar;
  end;
  TServiceDescriptionW = _SERVICE_DESCRIPTIONW;
  PServiceDescriptionW = ^TServiceDescriptionW;

  //we use the ANSI version
  TServiceDescription = TServiceDescriptionA;
Soweit so gut. Der Record enthält doch nur einen PChar, sollte also doch auf Speicherebene identisch mit PChar sein. Doch warum funktioniert dann das hier nicht:
Delphi-Quellcode:
procedure TServiceInstaller.SetDescription(const Value: String);

begin
  if FServiceOpened then
  begin
    ChangeServiceConfig2(FhService, SERVICE_CONFIG_DESCRIPTION, PChar(Value));
    FDescription := Value;
  end;
end;
Benutz ich den Record und setz dort den PChar, dann klappt es. Aber wieso gibt es hier die Zugriffsverletzung??
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: Warum hier Zugriffsverletzung?

  Alt 27. Jul 2004, 15:33
PChar <> PPChar

Langfassung: PChar(Value) übergibt die Adresse des ersten Zeichens von Value. Die Funktion erwartet aber einen Zeiger auf einen Zeiger (erster Member der Struktur) auf des erste Zeichen von Value.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Warum hier Zugriffsverletzung?

  Alt 27. Jul 2004, 15:38
Autsch

Klar. Danke.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:42 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