Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi set of char wie array behandeln (https://www.delphipraxis.net/94429-set-char-wie-array-behandeln.html)

messie 21. Jun 2007 10:51


set of char wie array behandeln
 
Ich muss einen Test auf Buchstabenkombinationen untersuchen. Es sind immer zwei Buchstaben von aa bis ZZ.
Kann ich ein array so bauen, daß ich von a to z oder von A to Z eine Schleife hinbekomme? Mit set(i) komme ich nicht weiter.

Danke, Messie

mkinzler 21. Jun 2007 10:54

Re: set of char wie array behandeln
 
Set ist ja ne Menge, das ist was anderes wie ein Array.
Du kannst den Inhalt des Arrays, Eleemnet für Element mit dem Suchstring vergleichen.

pszopp 21. Jun 2007 11:02

Re: set of char wie array behandeln
 
Hallo Messie,

ich habe dein Problem noch nicht ganz verstanden. Kannst du es konkretisieren?
Vielleicht hilft folgender Code aber schon weiter:
Delphi-Quellcode:
type
  TMyType = 'a'..'z';
  TMyArray = array[TMyType] of string;

var
  Daten : TMyArray;

implementation

{$R *.dfm}

procedure Test;
var lk : Char;
begin
  // Daten von a bis z durchlaufen.
  for lk := Low(TMyType) to High(TMyType) do begin
    ShowMessage(Daten[lk]);
  end;

  // Oder direkter Zugriff mit einem Buchstaben.
  ShowMessage(Daten['b']);
end; // Test
Gruß,
pszopp

Robert Marquardt 21. Jun 2007 11:06

Re: set of char wie array behandeln
 
Die Problembeschreibung ist ungenuegend. Geht es um doppelte Buchstaben? Sollen die Vorkommen gezaehlt werden oder will man die Position des ersten Vorkommens?
Hier mal ein Vorschlag fuer das Zaehlen:
Delphi-Quellcode:
const
  AnzahlBuchstaben = 26; // 'a'..'z'
var
  Text: string; // zu durchsuchender Text
  Vorkommen: array [0..AnzahlBuchstaben*2 - 1] of Integer; // hier wird gezaehlt
  I: Integer;
begin
  for I := Low(Vorkommen) to High(Vorhommen) do
    Vorkommen[I] := 0;
  for I := 1 to Length(Text) - 1 do
    if Text[I] = Text[I+1] then
    begin
      if Text[I] in ['a'..'z'] then
        Inc(Vorkommen[Ord(Text[I]) - Ord('a')])
      else
      if Text[I] in ['A'..'Z']) then
        Inc(Vorkommen[Ord(Text[I]) - Ord('A') + AnzahlBuchstaben]);
    end;
end;
Danke, Fehler behoben.

fwsp 21. Jun 2007 11:11

Re: set of char wie array behandeln
 
to robert:
zeile 13 müsste so lauten ;)
Delphi-Quellcode:
if Text[I] in ['a'..'z'] then

messie 21. Jun 2007 11:30

Re: set of char wie array behandeln
 
Zitat:

Zitat von pszopp
for lk := Low(TMyType) to High(TMyType) do begin

Das war genau das, was ich suchte: der Zugriff auf den set per char.

Dann komme ich mit
Delphi-Quellcode:
ShowMessage(lk)
an jedes Element des set - auch ohne das in einem array parken zu müssen.


Danke an alle, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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