Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Set Of ? (https://www.delphipraxis.net/9197-set.html)

negaH 16. Okt 2003 13:10

Re: Set Of ?
 
Zitat:

mit der man jeden beliebigen String umwandeln kann, nicht von vornherein bei Delphi gibt?
Die Antwort ist ziemlich einfach: diese Funktionen nutzen statische Typ Deklarationen die zur Entwurfszeit der RTL überhaupt nicht bekannt waren. Sprich die Entwickler bei Borland kannten den Typ TName überhaupt nicht, wie sollen sie dann darauf reagieren ??

Die allgemeine Funktion in deinem Falle ist aber GetEnumValue() und GetEnumName() und TypeInfo(). Die Funktionen StrToName() und NameToStr() sind nur Funktionen die speziell auf den Typ TName abgestimmt wurden, und die generellen Funktionen kapseln.

Somit haben die Borlandentwickler genau das getan was du verlangtest, aber eben universell auf jeden möglichen zukünftigen Typ anwendbar.

Gruß Hagen

Hansa 17. Okt 2003 10:44

Re: Set Of ?
 
Zitat:

Zitat von negaH
...Interessant wird es jetzt mit "idiot" denn mit Hansas Vorschlag würde eine solche Doppeldeutigkeit zu Fehlern führen. Da eben "id" auch in "idiot" vorkommt.

Hatte das schon im Beitrag stehen (ohne Idiot) 8) und wieder gelöscht:

Delphi-Quellcode:
const namestring : ' comment name id idiot ';
Man beachte die Leerzeichen. Denn hiermit wäre der Idiot unschädlich gemacht. :mrgreen: Die Suchabfrage müßte natürlich auch noch geändert werden:

Delphi-Quellcode:
if pos (' ' + SuchString + ' ',namestring) <> 0;

negaH 17. Okt 2003 13:33

Re: Set Of ?
 
:) @Hansa, darauf habe ich schon gewartet ;) Trotzdem habe ich die Erfahrung gemacht das dies schief gehen kann, wenn der Programmierer selber diese Leerzeichen setzen muß. Es wurde vergessen oder der String selber wurde nicht ge'Trim()t.

Gruß Hagen

Hansa 17. Okt 2003 18:30

Re: Set Of ?
 
Zitat:

Zitat von negaH
:) @Hansa, darauf habe ich schon gewartet ;) Trotzdem habe ich die Erfahrung gemacht das dies schief gehen kann, wenn der Programmierer selber diese Leerzeichen setzen muß...

hehe, darauf gewartet. :mrgreen: War doch klar. 8) Jan hat gesagt, er beschäftige sich jetzt mal mit Typen. Natürlich kann er Deinen Code abkupfern und versteht ihn nicht richtig. Nach dem Motto: "es funktioniert und keiner weiß warum". Der Code ist übrigens in meiner privaten CodeLib gelandet, aber nicht für solche Fragen, wie hier.

Desweiteren sage ich nur PROCEDURE

Jan 17. Okt 2003 20:28

Re: Set Of ?
 
Zitat:

Zitat von Hansa
Jan hat gesagt, er beschäftige sich jetzt mal mit Typen. Natürlich kann er Deinen Code abkupfern und versteht ihn nicht richtig. Nach dem Motto: "es funktioniert und keiner weiß warum".

Hallo Hansa,
nein ich beschäftige mich nicht mit Typen, weil ich nicht schwul bin! :roteyes:
Ausserdem verstehe ich sehr wohl was der Quelltext soll, und auch wie er funktioniert, weil ich mir die Typinfo unit angeguckt habe.
Gruß
Jan

Pseudemys Nelsoni 23. Okt 2003 16:59

Re: Set Of ?
 
ok, noch eine frage zu "Set Of"


wozu muss ich ein "Set" erstellen? kann ich nicht einfach einen aufzählungstyp checken? also z.b:

Delphi-Quellcode:
Type Tbla = (a,b,c,d,e,f)
var
  bla: TBla;
begin
  if (b in bla) then
  ShowMessage('jo')
end;

^^^^^^^^wieso kann ich nicht so prüfen ob ein bestimmter wert enthalten ist?

wieso muss ichs so machen?...

Delphi-Quellcode:
Type Tbla = (a,b,c,d,e,f)
Tirgendwas = Set Of Tbla;
var
  irgendwas: Tirgendwas;
begin
  if (b in irgendwas) then
  ShowMessage('jo')
end;
:gruebel:

Christian Seehase 23. Okt 2003 17:20

Re: Set Of ?
 
Moin Silent,

im ersten Falle ist bla vom Typ einer Aufzählung. Hier kannst Du nur auf Gleicheit prüfen (gleich einen Element der Aufzählung)
Im Zweiten Falle ist bla vom Typ einer Menge, also sozusagen, array of Aufzählung, und Du kannst prüfen, ob der gesuchte Wert darin enthalten ist.

Übrigens fehlt jeweils die Initialisierung von bla bzw. irgendwas, der Inhalt wäre also wohl zufällig.

Phoenix 23. Okt 2003 17:21

Re: Set Of ?
 
Hrm? Die "TypInfo" kannst Du Dir bei Deinem D7 aber nicht angeguckt haben. Da heisst die Unit nämlich "Types".

Das weiss ich auch eigener leidlicher Erfahrung mit der RTTI und verschiedenen Delphi-Versionen *seufz*.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz