AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Operator ist auf diesen operatortyp nicht anwendbar
Thema durchsuchen
Ansicht
Themen-Optionen

Operator ist auf diesen operatortyp nicht anwendbar

Ein Thema von Demon666 · begonnen am 16. Jun 2010 · letzter Beitrag vom 16. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
Demon666

Registriert seit: 16. Jun 2010
21 Beiträge
 
Delphi 7 Personal
 
#1

Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 21:34
Delphi-Version: 2005
Hallo

ich muss bis morgen ein programm für die schule schreiben das die rechtschreibung eines textes überprüft, aber ich bekomme andauernd die meldung "Operator ist auf diesen operatortyp nicht anwendbar"

weiß jemand warum?
(ich würde mich über schnelle antworten freuen, ihr seht ja ich bin etwas unter zeitdruck )

hier mein code:
Delphi-Quellcode:
procedure TFormrechtschreibung.Rechtschreibungpruefen;
var woerterbuch: Tstringlist;
    Zeile: string;
    wort: shortstring;
   wortanfang, wortende, s, r : integer;
begin
  woerterbuch:=Tstringlist.create;
  woerterbuch.LoadFromFile('wörterbuch.txt');
  wortanfang:=1;
  wortende:=1;
  Zeile:=Form1.Memo.Lines[i];
  for r:=1 to Length(Zeile) do
  begin
  wort:='';

        if Zeile[wortende] in [char( 32)..char( 64)]
     or if Zeile[wortende] in [char( 91)..char( 96)]
     or if Zeile[wortende] in [char(123)..char(126)]
     or if Zeile[wortende] in [char(128)..char(137)]
     or if Zeile[wortende] in [char(143)..char(153)]
     or if Zeile[wortende] in [char(160)..char(191)]
     or if Zeile[wortende]=char(139)
     or if Zeile[wortende]=char(141)
     or if Zeile[wortende]=char(155)
     or if Zeile[wortende]=char(157)
     or if zeile[wortende]=char(215)
     or if zeile[wortende]=char(247) then

      begin
        wort:=Copy(Zeile,Wortanfang,Wortende-1);
          for s:=0 to Woerterbuch.count-1 do
          begin
            if wort<>woerterbuch[s] then
            begin
              Edfalscheswort.Text:=wort;
              exit;
            end; //von if
            end; //von for
            end
          else
            wortende:=wortende+1;
            if wortende=Length(Zeile) then
              i:=i+1;

        end;//von if
   end; //von for

   end;
EDIT: ich benutze übrigens delphi 7
Simon

Geändert von SirThornberry (16. Jun 2010 um 21:40 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 21:44
In welcher Zeile?
Markus Kinzler
  Mit Zitat antworten Zitat
Demon666

Registriert seit: 16. Jun 2010
21 Beiträge
 
Delphi 7 Personal
 
#3

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 21:46
wortende:=wortende+1; und
i:=i+1;
Simon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 21:49
Wo ist i deklariert?
WEs sollte so reichen
   if Zeile[wortende] in [char( 32)..char( 64)] or Zeile[wortende] in [char( 91)..char( 96)] ... Aber ich vermute der Fehler ist woanders
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 21:52
Zitat:
if ... or if ... or if ... then
Tja, die liebe Delphi-Syntax.
Was machen denn die vielen IFs mitten drin?
Und nicht die Klammern vergessen.

Delphi-Quellcode:
if (Zeile[wortende] in [char( 32)..char( 64)])
  or (Zeile[wortende] in [char( 91)..char( 96)])
  or (Zeile[wortende] in [char(123)..char(126)])
  or (Zeile[wortende] in [char(128)..char(137)])
  or (Zeile[wortende] in [char(143)..char(153)])
  or (Zeile[wortende] in [char(160)..char(191)])
  or (Zeile[wortende]=char(139))
  or (Zeile[wortende]=char(141))
  or (Zeile[wortende]=char(155))
  or (Zeile[wortende]=char(157))
  or (zeile[wortende]=char(215))
  or (zeile[wortende]=char(247)) then

Delphi-Quellcode:
if Zeile[wortende] in [char( 32)..char( 64), char( 91)..char( 96),
  char(123)..char(126), char(128)..char(137), char(143)..char(153),
  char(160)..char(191), char(139), char(141), char(155), char(157),
  char(215), char(247)] then
Und ansonsten würde ich dir noch anraten, dich noch etwas um eine "vernünftige" Einrückung zu kümmern,
dann würden so Kommentare ala //von for erübrigen und man hätte etwas mehr Überblick.
$2B or not $2B

Geändert von himitsu (16. Jun 2010 um 21:57 Uhr)
  Mit Zitat antworten Zitat
Demon666

Registriert seit: 16. Jun 2010
21 Beiträge
 
Delphi 7 Personal
 
#6

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 21:55
@mkinzler:i ist eine globale veriable
und ich will ja alles was kein buchstabe ist abdecken...

edit: danke @himitsu, funktioniert jetzt, aber beim dem end; ganz am ende der procedure krieg ich jetzt ein '.' erwartet aber ';' gefunden
edit2 (tut mir leid für die vielen edits): hab ein end zu viel, habs rausgelöscht un bekomme jetzt bei dem else von der ganz großen if schleife ein "end erwartet aber else gefunden"
Simon

Geändert von Demon666 (16. Jun 2010 um 22:00 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 21:59
Zitat:
@mkinzler:i ist eine globale veriable
Aud derartige globale Variablen sollte man verzichten. Übergebe den Index als Parameter der Prozedur/Funktion
Zitat:
und ich will ja alles was kein buchstabe ist abdecken...
Dann würde ich die Abfragelogik umdrehen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 22:02
PS: Wo wird woerterbuch eigentlich wieder freigegeben?
(ich sehe da ein nettes Speicherleck und von Resourcenschutzblöcken ala Try-Finally dagegen nichts)

aber beim dem end; ganz am ende der procedure krieg ich jetzt ein '.' erwartet aber ';' gefunden
Stichwort Codeformatierung (vorallem die Einrückung).
Zähle mal deine BEGIN und die jeweils zugehörigen END durch.

Wobei eine gute Codeformatierung das Durchzählen eigentlich überflüssig machen würde, da man solche Fehler oftmals sofort erkennen würde.
$2B or not $2B

Geändert von himitsu (16. Jun 2010 um 22:04 Uhr)
  Mit Zitat antworten Zitat
Demon666

Registriert seit: 16. Jun 2010
21 Beiträge
 
Delphi 7 Personal
 
#9

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 22:04

Übergebe den Index als Parameter der Prozedur/Funktion
wie mach ich das?

Dann würde ich die Abfragelogik umdrehen
was meinst du mit umdrehen?


@himitsu: wie freigeben? und die anzahl der ends und begins hab ich schon 10 mal gezählt, die stimmen
Simon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Operator ist auf diesen operatortyp nicht anwendbar

  Alt 16. Jun 2010, 22:05
Oder man Verwendet einen AddIn der das farblich virtualisiert wie z.B. Castalia oder CnWizards
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:08 Uhr.
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