AGB  ·  Datenschutz  ·  Impressum  







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

DLL ungültige Zeigeroperation

Ein Thema von S4SH1981 · begonnen am 12. Mär 2009 · letzter Beitrag vom 13. Mär 2009
 
S4SH1981

Registriert seit: 13. Jul 2007
59 Beiträge
 
#1

DLL ungültige Zeigeroperation

  Alt 12. Mär 2009, 18:40
Hallo zusammen,

habe folgendes Problem mit der DLL Programmierung.
Ich möchte viele Sachen in seperate DLL Dateien auslagern.

Es soll mir lediglich nur der Prozessorname ausgelesen werden.

Hier der Code der Unit
Delphi-Quellcode:
unit GetCPUName;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

function GetProzessorName : string;
external 'C:\***\DLL2\getcpunames.dll';


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text := GetProzessorName;
end;

end.
Hier nun der Code der DLL

Delphi-Quellcode:
library GETCPUNAMES;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }

  

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls,
  Registry;

{$R *.res}

function GetProzessorName: string;
var reg: TRegistry;
begin
  result:='Unbekannter Prozessor';
  reg:=TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    reg.OpenKey('Hardware\Description\System\CentralProcessor\0', false);
    result:=reg.ReadString('ProcessorNameString');
  finally
    reg.free;
  end;
end;

exports
  GetProzessorname;

begin
end.
Ich bekomme dabei die Fehlermeldung, dass eine "Ungültige Zeigeroperation" vorliegt.
Nach dem Abnicken der Fehlermeldung erhalte ich dann doch den Namen.
Wäre nur schön wenn die Fehlermeldung nicht erscheinen würde.

Es ist mit Sicherheit nur ein kleiner Fehler, aber zurzeit komme ich da nicht drauf und setze mal wieder auf eure gute Hilfe.

Gruß S4SH
  Mit Zitat antworten Zitat
 


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 02:47 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 by Thomas Breitkreuz