AGB  ·  Datenschutz  ·  Impressum  







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

Umgang mit Interfaces

Ein Thema von Whookie · begonnen am 5. Dez 2013 · letzter Beitrag vom 16. Dez 2013
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.464 Beiträge
 
Delphi 12 Athens
 
#1

AW: Umgang mit Interfaces

  Alt 15. Dez 2013, 15:35
Man muß dann nur die Referenzzählung richtig implementieren.

z.B.
- von den Unterkomponenten die Referenzzählung auf den obersten Knoten weiterleiten (bzs, an den Besitzer)
- Rückwärtsreferenzen aus der Referenzzählung ausnehmen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
450 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Umgang mit Interfaces

  Alt 15. Dez 2013, 18:34
- von den Unterkomponenten die Referenzzählung auf den obersten Knoten weiterleiten (bzs, an den Besitzer)
- Rückwärtsreferenzen aus der Referenzzählung ausnehmen
..wenn ich mir das so recht überlege muss die Not schon groß sein, so etwas anzugehen (schon gar bei den nur rudimentär vorhandenen Debugmöglichkeiten von XE4 )...
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.018 Beiträge
 
Delphi 12 Athens
 
#3

AW: Umgang mit Interfaces

  Alt 15. Dez 2013, 19:28
Ich habe das bei mir so, dass sich die GUI-Interfaces gegenseitig mit den dahinterliegenden Interfaces einklinken. Wenn man das sauber umsetzt und klar ist wer sich wann und wie wieder deregistriert, hatte ich damit noch nicht die kleinsten Probleme.

Und der Debugger funktioniert bei mir problemlos, außer wenn wieder jemand with benutzt hat. (Das geht dann eh gleich an den Pranger...)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
450 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Umgang mit Interfaces

  Alt 16. Dez 2013, 01:00
Und der Debugger funktioniert bei mir problemlos, außer wenn wieder jemand with benutzt hat. (Das geht dann eh gleich an den Pranger...)
Dann verurteile ich Dich mal zu 30 Tagen XE4-Debugging... da geht auch alles problemlos ... ... solange man nicht sowas komplexes wie ein Array oder eine Liste verwendet
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.018 Beiträge
 
Delphi 12 Athens
 
#5

AW: Umgang mit Interfaces

  Alt 16. Dez 2013, 07:40
Dann verurteile ich Dich mal zu 30 Tagen XE4-Debugging... da geht auch alles problemlos ... ... solange man nicht sowas komplexes wie ein Array oder eine Liste verwendet
Wir haben XE4 seit dem Erscheinen bis zum Update 1 von XE5 genutzt. Bei mir gibt es mit Array oder Listen kein Problem. Grad nochmal ausprobiert.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
450 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Umgang mit Interfaces

  Alt 16. Dez 2013, 08:59
Wir haben XE4 seit dem Erscheinen bis zum Update 1 von XE5 genutzt. Bei mir gibt es mit Array oder Listen kein Problem. Grad nochmal ausprobiert.
Dann versuch mal das komplexe Beispiel: http://www.delphipraxis.net/175322-x...ml#post1218435


Ach ja, und weil dein XE4 ja so toll geht probier mal das:

Code:
unit uTest;

interface

Const
  maxXData = 4;
  maxYData = 4;

Type
  TData = Array[0..maxXData+1, 0..maxYData+1] Of Char;

Procedure TestIt;

implementation

Const
  CX: Array[0..7] Of Integer = (-1, 0, 1, 1, 1, 0, -1, -1);
  CY: Array[0..7] Of Integer = (-1, -1, -1, 0, 1, 1, 1, 0);

Var
  AData: TData;


function FindWord( AString: String): Boolean;
var
  iX: Integer;
  iY: Integer;

  function WordAt(AIdx, x,y, ox,oy: Integer): Boolean;
  var
    i: Integer;
  begin
    Result := False;

    if AString[AIdx] = AData[x,y] then
    begin
      Inc(AIdx);
      if AIdx > Length(AString) then
      begin
        Result := TRUE;
      end
      else
      begin
        for i := 0 to 7 do
        begin
          if Not (((x+CX[i])=ox) And ((y+CY[i])=oy)) then //<--------- Breakpoint
          begin
            Result := WordAt(AIdx, x+CX[i], y+CY[i], x, y);
            if Result then
              Break;
          end;
        end;
        i := 0;
      end;
    end
    else
    begin
      i := 0;
    end;
  end;

begin
  Result := FALSE;
  for iX := 0 to maxXData-1 do
  begin
    for iY := 0 to maxYData-1 do
    begin
      if WordAt(1, iX+1, iY+1, 0, 0) then
      begin
        //Mark AString as found
      end;
    end;
  end;
end;


Procedure TestIt;
var
  iX: Integer;
  iY: Integer;
begin
  for iX := 0 to maxXData-1 do
  begin
    for iY := 0 to maxYData-1 do
    begin
      AData[iX, iY] := Char(Ord('A')+Random(Ord('Z')-Ord('A')+1));
    end;
  end;
  AData[3,3] := 'T';
  //
  FindWord('TEST');
end;
end.
Mach einen Breakpoint an der markierten Stelle und füge folgendes in die Liste der Überwachten Ausdrücke ein:

AData[x,y]
AString[AIdx]
(x+CX[i])
(y+CY[i])

Dann kriegst du nämlich 4 mal "Nicht verfügbarer Wert" ... soviel zu "..Bei mir gibt es mit Array oder Listen kein Problem..."
Whookie

Software isn't released ... it is allowed to escape!

Geändert von Whookie (16. Dez 2013 um 09:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.018 Beiträge
 
Delphi 12 Athens
 
#7

AW: Umgang mit Interfaces

  Alt 16. Dez 2013, 13:09
Das Entscheidende steht in dem QC Eintrag... mit Bereichsüberprüfung. Die habe ich nie an außer zu speziellen Debugzwecken oder für Unittests etc., das macht das Programm ansonsten nur unnötig langsam.
Sebastian Jänicke
AppCentral
  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:57 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