Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler beim Stringvergleich/Erkennt Objekt nicht (https://www.delphipraxis.net/108009-fehler-beim-stringvergleich-erkennt-objekt-nicht.html)

varzil 6. Feb 2008 11:03


Fehler beim Stringvergleich/Erkennt Objekt nicht
 
Hi,
wir hatten in der Schule ein paar simple Chiffrieralgorithmen geschrieben.
Ich hab dann zu Hause mal die Vigenére codierung versucht:Wikipediaeintrag
Ich habe das Quadrat in ein Stringgrid geschrieben.
Wenn ich jetzt mit folgender Funktion den Text verschüsseln will,
Delphi-Quellcode:
function stringcode (a,b:string):string;
var
x,y,i:integer;
stringbuffer:string;
begin
 repeat
  a:=a+a;
 until length(a)>=length(b);

 for i:=1 to length(b) do
   begin
    while not a[i]=grid.cells[x,0] do
    x:=x+1;

    while not b[i]=grid.cells[0,y] do
    y=y+1;

    stringbuffer:=stringbuffer+grid.cells[x,y];
    x:=0;
    y:=0;
    end;
result:=stringbuffer;
end;
zeigt er mir am Gleichheitszeichen : "Operator ist auf Operandentyp nicht anwendbar"
Wenn ich statt
Delphi-Quellcode:
while not a[i]=grid.cells[x,0] do
es anders schreibe:
Delphi-Quellcode:
 while a[i]<>grid.cells[x,0] do
Bekomme ich den Fehler "Undefinierter Bezeichner: 'grid'
Ich hoffe ihr könnt mir helfen, danke.

NormanNG 6. Feb 2008 11:06

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht
 
Hi,

der not-Operator bindet stärker als "=". Versuchs mal mit Klammern oder nimm gleich "<>"...

Delphi-Quellcode:
while not (a[i]=grid.cells[x,0]) do

Nuclear-Ping 6. Feb 2008 11:07

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht
 
Und woher weiß die Funktion was "grid" ist?

varzil 6. Feb 2008 11:12

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht
 
Mir is eben ne Erleuchtung gekommen und hab mir genau die selbe Frage gestellt wie Nuclear-Ping.
Habs jetzt umgeschrieben
Delphi-Quellcode:
while a[i]<>Form1.grid.cells[x,0] do x:=x+1;
Jetzt bekomm ich das Programm zum laufen aber sobald ich dann verusche was zu codieren hängt sich das Programm auf.

Danke für den Hinweis NormanNG.

mashutu 6. Feb 2008 11:30

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht
 
Zitat:

Zitat von varzil
Hi,
Wenn ich jetzt mit folgender Funktion den Text verschüsseln will,
Delphi-Quellcode:
function stringcode (a,b:string):string;
var
x,y,i:integer;
stringbuffer:string;
begin
  repeat
    a:=a+a;
  until length(a)>=length(b);

  for i:=1 to length(b) do
  begin
    while not a[i]=grid.cells[x,0] do
      x:=x+1;                            //!!! Fehler 1: x wurde nirgends initialisiert
                                          //!!! Fehler 2: while ... es wird nirgends geprueft ob x noch im Range des Grid ist

    while not b[i]=grid.cells[0,y] do
    y=y+1;                               //!!! Fehler 3: y wurde nirgends initialisiert
                                          //!!! Fehler 4: while ... es wird nirgends geprueft ob y noch im Range des Grid ist

    stringbuffer:=stringbuffer+grid.cells[x,y]; //rpoduziert hier ggf. Muell
    x:=0;                                //zu spaet
    y:=0;
  end;
  result:=stringbuffer;
end;


varzil 7. Feb 2008 14:04

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht
 
Ach verdammt das initialisieren hatte ich ganz vergessen. (Mein Lehrer der Nichtskönner ist zwar der festen Überzeugung, dass man sie nich initialisieren muss.
Genau das war der Fehler, danke!

Ich verstehe nich ganz was du mit Fehler 2,4 meinst.
Es wird der erste Buchstabe aus dem grid mit der stringvariable verglichen, wenns nich passt geht er einen Buchstaben weiter.
Das heisst er MUSS zu einem Ergebnis kommen wenn nur die 26 Buchstaben des Alphabets und keine Sonderzeichen benutzt wurden; für den Fall muss ich dann noch ne Fehlermeldung einbauen das stimmt.

Danke an alle die mir geholfen haben!


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