AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zugriffverletzung beim Verwenden von Interfaces
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffverletzung beim Verwenden von Interfaces

Ein Thema von mirage228 · begonnen am 14. Dez 2003 · letzter Beitrag vom 16. Dez 2003
Antwort Antwort
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#1

Re: Zugriffverletzung beim Verwenden von Interfaces

  Alt 15. Dez 2003, 23:57
Eine andere Möglichkeit wäre vom obigen Konzept abzurücken. Man benutzt ein einheitliches IDECStream Objekt, das aber eine Liste der zu verwendenden Filter-Objekte verwaltet. Die Konvertierung nach/vom MIME 64 oder ein Cipher oder eine Komprimierung wären nur Filter Objecte. Somit enthält der IDECStream eine Liste solcher Filterobjete. Deren Reihenfolge bei der Registration im IDECStream bestimmt in welcher Reihenfolge welche Aktionen getätigt werden. Nun, der IDECStream alloziert intern einen Buffer der eine Minimal und Maximale Größe besitzt. Am Anfang stehen in diesem Buffer 3 Bytes und nun müssen diese per inplaced Operationen durch den MIME64 Filter auf 4 Bytes expandiert werden. Usw. usw.

Das Klassendesign könnte dann so aussehen:
Delphi-Quellcode:
type
  IDECFilter = interface
    function Encode(Data: Pointer; DataSize: Integer): Integer; stdcall;
    function Decode(Data: Pointer; DataSize: Integer): Integer; stdcall;

    function MinChunkSize: Integer; stdcall;
  end;

  IDECFilters = interface
    function Count: Integer; stdcall;
    function GetFilter(Index: Integer): IDECFilter; stdcall;
    procedure Add(const Filter: IDECFilter); stdcall;
  end;
 
  IDECStream = interface
    procedure Write(const Data: Pointer; DataSize: Integer); stdcall;
    procedure Read(out Data: Pointer; DataSize: Integer); stdcall;

    procedure Write(const Data: IDECStream; DataSize: Integer); stdcall;
    procedure Read(const Data: IDECStream; DataSize: Integer); stdcall;

    function Filters: IDECFilters;
  end;
Im obigen Beispiel habe ich absichtlich noch mit Pointern gearbeitet, normalerweise müssten diese durch Interface Objecte ersetzt werden.
Desweiteren müsste der IDECStream eben direkte ordinale Typen unterstützen, also WriteByte(), WriteChar(), WriteWord() etc.

Tja, was ist aber nun besser ??

Gruß Hagen
  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 14:18 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