Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi EInvalidPointer ohne Sinn? (https://www.delphipraxis.net/94846-einvalidpointer-ohne-sinn.html)

SirThornberry 28. Jun 2007 08:40

Re: EInvalidPointer ohne Sinn?
 
warum es nur sporadich auftritt ist so zu erklären. Bei dynamischen Arrays und Strings wird der Speicher auch dynamich angefordert. Und je nochdem welcher Speicherbereich zurückgeliefert wird legen bestimmte sachen hintereinander oder nicht. Wenn du also über das Array hinaus geschrieben hast war manchmal durch das dynamische Anfordern von Speicher dahinter nix und manchmal etwas relevantes was du überschrieben hast.

WIng2005 28. Jun 2007 09:11

Re: EInvalidPointer ohne Sinn?
 
Klingt auf jeden Fall plausibel...
Hatte auch bis jetzt keine Fehler weiter. Habe die Schleife entprechend angepasst. Sollte also jetzt geht.
Danke nochmal, das hätte ich nie gesehen...

MFg
Steffen

SirThornberry 28. Jun 2007 09:31

Re: EInvalidPointer ohne Sinn?
 
könntest du noch sagen von welchem Typ Rechte und von welchem Typ berechtigung ist. Eventuell geht es eleganter als mit schleife.

WIng2005 28. Jun 2007 10:30

Re: EInvalidPointer ohne Sinn?
 
Berechtigung wird als String aus ner DB gelesen. Format z.B. 0001001001, also 10 Stellen, 1 oder 0
Da ich gern an verschiedenen Stellen und mit möglichst wenig Code die einzelnen Positionen des Strings abfragen
möchte, dachte ich mir, dass es sinnvoll scheint, Berechtigung in ein Array zu schreiben...Rechte eben.

MFg
Steffen

DeddyH 28. Jun 2007 10:44

Re: EInvalidPointer ohne Sinn?
 
Zitat:

Zitat von WIng2005
0001001001, also 10 Stellen, 1 oder 0

Das schreit doch geradezu nach einer Zahl (Word oder DWORD), oder nicht? Durch Binärvergleiche kannst Du dann die Berechtigungen auslesen.

WIng2005 28. Jun 2007 11:14

Re: EInvalidPointer ohne Sinn?
 
Könntest du mal ein Beispiel bringen?

Dank Dir!
Steffen

DeddyH 28. Jun 2007 12:06

Re: EInvalidPointer ohne Sinn?
 
Delphi-Quellcode:
const Lesen     = $01;
      Schreiben = $02;
      Oeffnen   = $04;
      Loeschen  = $08;
      Ausfuehren = $10;

var Berechtigung: Word = 17; //Lesen und Ausführen

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Berechtigung and Schreiben) > 0 then
    ShowMessage('Schreiben erlaubt')
  else
    ShowMessage('Schreiben nicht erlaubt');

  Berechtigung := Berechtigung and not Lesen;

  if (Berechtigung and Lesen) > 0 then
    ShowMessage('Lesen erlaubt')
  else
    ShowMessage('Lesen nicht erlaubt');

  Berechtigung := Berechtigung or Schreiben;

  if (Berechtigung and Schreiben) > 0 then
    ShowMessage('Schreiben erlaubt')
  else
    ShowMessage('Schreiben nicht erlaubt');
end;

WIng2005 28. Jun 2007 14:17

Re: EInvalidPointer ohne Sinn?
 
Sieht in jedem Fall schonmal gut aus.
Mein Gedanke war, verschiedene Module zu sperren, je nach Nutzertyp und Berechtigungsschlüssel.
Beispiel:
Delphi-Quellcode:

If Benutzer='User' then
Begin
if Rechte[1]=1 then...
if Rechte[2]=1 then...

usw.
die einzelnen Bedeutungen der Indexe ist jedoch vom Benutzertyp abhängig.
Werde mir die Sache nochmal durch den Kopf gehen lassen, bin aber erstmal
mehr als froh, dass die Sache wieder läuft...

MFG
Steffen

Christian Seehase 28. Jun 2007 16:19

Re: EInvalidPointer ohne Sinn?
 
Moin Steffen,

auch wenn es jetzt funktioniert solltest Du Dir mal Heikos Tip anschauen, und Str(Key,s) weglassen:

Delphi-Quellcode:
// statt
Str(Key,s);
if s='13' then PKom_Lager_vergleich(sender)

// besser
if Key = VK_RETURN then ...
Das 13 Return dürfte wohl den meisten klar sein, aber mit Konstante wird das Ganze doch lesbarer, ausserdem sparst Du Dir eine unnötige Konvertierung.

WIng2005 29. Jun 2007 22:00

Re: EInvalidPointer ohne Sinn?
 
Da geb ich dir Recht. Kannte ich so vorher nicht.
Ist bereits geändert.
Dank euch nochmal für die Hilfe..


MFG
Steffen


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 Uhr.
Seite 3 von 3     123   

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-2025 by Thomas Breitkreuz