![]() |
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.
|
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 |
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.
|
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 |
Re: EInvalidPointer ohne Sinn?
Zitat:
|
Re: EInvalidPointer ohne Sinn?
Könntest du mal ein Beispiel bringen?
Dank Dir! Steffen |
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; |
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:
die einzelnen Bedeutungen der Indexe ist jedoch vom Benutzertyp abhängig. If Benutzer='User' then Begin if Rechte[1]=1 then... if Rechte[2]=1 then... usw. Werde mir die Sache nochmal durch den Kopf gehen lassen, bin aber erstmal mehr als froh, dass die Sache wieder läuft... MFG Steffen |
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:
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.
// statt
Str(Key,s); if s='13' then PKom_Lager_vergleich(sender) // besser if Key = VK_RETURN then ... |
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. |
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