Autor Beitrag
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 08.07.10 17:52 
Hi,

irgendwie habe ich heute meine Gehirnhälften zu lange einer drehenden Dame ausgesetzt (siehe offtopic).

Folgendes möchte ich erreichen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function TForm1.HoldChars_in_Range(Dummy_String: string; Dummy_Char_Range: array of char): string;
var
  x: Integer;
begin

  { Zeichen aus dem Strings beibehalten }
  Result := '';
  showmessage(Dummy_Char_Range);
  for x := 1 to Length(Dummy_String) do
    if (Dummy_String[x] in Dummy_Char_Range) then // hier wird geschimpft, dass der Operator nicht auf den Operantentyp anwendbar ist
      Result := Result + Dummy_String[x];

end;

// Der Aufruf sollte wenn möglich so aussehen:

Dummy_String := HoldChars_in_Range(Edit1.Text, ['0'..'9' , 'A'..'Z''a'..'z']);
// hier wird wieder gemeckert, ']' erwartet, aber '..' gefunden



Bei der function verstehe ich nicht, dass der Char (string[x]) nicht in der Menge (Dummy_Char_Range) vorkommen darf?
Und bei dem Aufruf an sich sollte das doch auch wieder eine Menge, also ein Array sein.

Gruß
~Mathias


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Do 08.07.2010 um 18:17

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Do 08.07.10 17:54 
nimm statt array of char lieber Set of Char. dann sollte es gehen. der in-Operator funktioniert in D7 nämlich nur mit Sets.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
trm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 08.07.10 18:08 
Huhu,
Danke, aber Set of ist doch nicht in der Funktion anwendbar - das ist doch eine Menge, die ich vorher definieren muss?
Dann ist aber die schöne Dynamik hin :(

OMG, es ist wirklich warm draussen.
Danke für den Hinweis, habs gelöst:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
type
  TChar_Range=set of Char;


function TForm1.HoldChars_in_Range(Dummy_String: string; Dummy_Char_Range:TChar_Range): string;
var
  x: Integer;
begin

  { Zeichen aus dem Strings beibehalten }
  Result := '';
  for x := 1 to Length(Dummy_String) do
    if (Dummy_String[x] in (Dummy_Char_Range)) then
      Result := Result + Dummy_String[x];

end;

Aufruf bleibt gleich.


Sorry für die weitere Banalität :/

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)


Zuletzt bearbeitet von trm am Do 08.07.10 18:15, insgesamt 1-mal bearbeitet
Teekeks
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Do 08.07.10 18:14 
Ein Set ist eine Menge.
Probiers doch mal:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var se:set of char;
            s:string;
            e:string;
            i:integer;
begin
  s:='123Hal323lo565';
  se:=['a'..'z','A'..'Z'];
  e:='';
  for i:=1 to length(s) do
    if s[i] in se then
      e:=e+s[i];
  Writeln(e); //ergebniss: Hallo
end;

Für diesen Beitrag haben gedankt: trm
trm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 08.07.10 18:16 
Huch, Du warst zu schnell.

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
ASMFreak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: Do 08.07.10 22:09 
Mathias,

probier 'mal

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type
  TMyCharSet = set of Char;

function HoldChars_in_Range(Dummy_String; Dummy_Char_Range: TMyCharSet): String;
  var
    X: Integer;
begin
  Result := '';
  for X := 1 to Length(Dummy_String) do
    if (Dummy_String[X] in Dummy_Char_Range) then
      Result := Result + Dummy_String[X];
end;


Dass der Compiler meckert, wundert mich nicht! "in" ist ein Mengenoperator und Du übergibst als Argument ein Array!

Gruß, Trutz


Hoppla, da war ein Tag zu viel! Und Rechtschreibung kann ich auch nicht mehr!
Und wohl auch ein Gals Rotwein zu viel, sonst hätte ich gemerkt, dass das Problem schon gelöst ist! :nut:
trm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 08.07.10 22:37 
Hihi (kurz und bündig).

Danke dennoch.

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)