Announcement

Collapse
No announcement yet.

Variable nicht verfügbar

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variable nicht verfügbar

    Hallo,

    Wieso sind manche Variablen innerhalb einer Klasse verfügbar und andere nicht ?

    Ich habe im public-Teil einer Klasse einen String Meldung deklariert, in der einen Memberfunktion laesst sich diesem String problemlos eine Zeichenkette zuweisen, in der anderen Memberfunktion nicht !

    sobald die Anweisung hier kommt

    Meldung := ' Hallo';

    gibts eine Zugriffsverletzung

    Was mache ich falsche ?

    Viele Gruesse

    Frank Ambiel

  • #2
    Hi

    Send mal die ganze Deklaration, aus Deinem Text läßt sich nichts ableiten bzw. alles könnte bad sein.

    Gruß Hage

    Comment


    • #3
      Hallo,

      Hier ein Auszug aus der Klassendeklaration

      TSerialIO = class(TObject)

      private
      { Private-Deklarationen }

      comReadDataBuf : array [0..300] of Char;

      comReadDataByte : Char;

      comWriteDataBuf : PChar;

      timeOutRead : dword;

      timeOutOld : dword;

      SystemZeit : TSystemTime;

      { Methoden, die von Excute direkt aufgerufen werden }

      { Hilfsmethoden }
      function GetByte(var DataBuf: Char; var DataLen: byte; FCommHandle : THandle):boolean;

      public
      { Public-Deklarationen }
      Meldung : String;

      ok : boolean;

      Endezeichen : byte;

      maxTime : word;

      StartZeichen : char;

      constructor create;

      end;

      constructor TSerialIO.create;

      begin
      if Config = NIl then
      Config := TConfig.create;
      hcomm := Config.getActHandle;
      timeOutRead := 500;
      Endezeichen :=0;
      end;

      function TSerialIO.GetByte(var DataBuf: Char; var DataLen: byte; FCommHandle : THandle):boolean;

      var
      Overlapped: TOverlapped;
      dwRead: CARDINAL;
      dwRes: DWORD;
      ok: boolean;
      DataBuff: Char;
      DataBuffPtr : PChar;
      ErrorCode : Integer;

      begin

      //Meldung := '';

      Overlapped.hEvent := CreateEvent(nil, true, false, nil);
      try

      usw. funktioniert alles noch ...

      finally

      PurgeComm(FCommHandle, PURGE_RXABORT );

      CloseHandle(Overlapped.hEvent);

      end;

      DataLen := dwRead;

      GetByte := ok;

      DataBuf := comReadDataByte;

      Meldung:='GetData ok!'; (* und hier gibts Mecker *)

      end;

      Das Programm laeuft bis zu dritt-letzten Zeile ohne Probleme, macht aber in der letzten eine exception

      Comment


      • #4
        Hallo,

        kann mir denn niemand sagen, woher diese EAccesViolation kommt ?

        Gruss

        Frank A

        Comment

        Working...
        X