AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Objekte zu einer Stringliste bearbeiten

Ein Thema von idefix2 · begonnen am 23. Dez 2011 · letzter Beitrag vom 23. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2   
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 00:12
Hallo, ich steh wieder einmal völlig auf dem Schlauch.

Ich habe eine Stringliste Paare und zu dieser Stringliste Objekte vom Typ Tpaar

Delphi-Quellcode:
type
TPaar=class(TObject)
  pEndzeit: Tdate;
  pLevel: byte
  end;

var
Paare: TStringlist;
Paar: Tpaar;
Symbol: string;
pi: integer;
...
begin
...
Paar:=Tpaar.Create; pi:=Paare.AddObject(symbol,Paar)
...
Bis daher ist alles klar. Jetzt würde ich gerne auf die Daten eines solchen Paares zugreifen:

Delphi-Quellcode:
with Paare.Objects[pi] as Tpaar do
....
Da meckert der Compiler: Operator ist auf diesen Operandentyp nicht anwendbar. Wie kann ich sonst auf meine Objekte vom typ TPaar zugreifen?
with Tpaar(Paare.Objects[pi]) do geht genausowenig, das hatte ich ursprünglich geschrieben.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 00:17
Vielleicht so...
Delphi-Quellcode:
var ItemObject:TObject;
    Paar:TPaar;
begin
  ItemObject:=Paare.Objects[pi];
  if ItemObject is TPaar then begin
    Paar:=ItemObject;
    Paar.pEndzeit:=Now;
  end;
end;
Tipp: WITH braucht man nie

Geändert von omata (23. Dez 2011 um 00:22 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 00:47
Delphi-Quellcode:
Paar:=Tpaar(Paare.Objects[pi]);
with Paar do
Danke, so geht es tatsächlich (und da kann man sich das with dann natürlich auch sparen). Ich bin gar nicht auf den Gedanken gekommen, dass das Problem etwas mit der with Anweisung zu tun haben könnte. Warum der Compiler im with kein as und keinen Typecast zulässt, verstehe ich eigentich nicht (und möchte hier auch keine Grundsatzdiskussion darüber führen, ob man with verwenden darf oder soll oder warum nicht - ich finde, es ist in manchen Fällen ein sehr praktisches Sprachelement, speziell wenn der Record oder hier die Klasseninstanz Element eines Arrays ist oder sonstwie kompliziert adressiert wird, aber natürlich nur, wenn es funktioniert).

Ich habe jetzt noch einmal die Delphi Hilfe überprüft, da ist bei der Dokumentation der with Anweisung keine derartige Einschränkung zu finden.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 00:49
da gibt es kein Problem, setze einfach mal Klammern um den as Ausdruck
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 01:05
Hab ich gleich probiert, funktioniert aber genausowenig mit Klammern um den as-Ausdruck.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 02:39
Das sollte eigentlich so funktionieren
with ( Paare.Objects[pi] as Tpaar ) do
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 08:43
Wie im Post 5 geschrieben: funktioniert auch mit Klammern nicht, gleiche Fehlermeldung.
Und with Tpaar(Paare.Objects[pi]) geht auch nicht, da kann es nicht an fehlenden Klammern liegen.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 08:49
mmhhh .... sehe ich zum ersten mal dass es da Probleme geben soll, hier D2010 gibt es kein Problem damit.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#9

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 09:59
Das Ding treibt mich zum Wahnsinn. Mit dem with hat das Problem doch nichts zu tun.

Paar:=TPaar(Paare.Objects[pi]); Fehlermeldung: Operator oder Semikolon fehlt
Paar:=Paare.Objects[pi] as TPaar; Fehlermeldung: Operator ist auf diesen Operandentyp nicht anwendbar

Bin für jeden Hinweis dankbar.
Miniaturansicht angehängter Grafiken
tpaar-fehler.jpg   tpaar-fehler-2.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Objekte zu einer Stringliste bearbeiten

  Alt 23. Dez 2011, 10:08
kann es sein dass TTrade auch eine Property Paare hat?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf