AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fehler beim Stringvergleich/Erkennt Objekt nicht

Fehler beim Stringvergleich/Erkennt Objekt nicht

Ein Thema von varzil · begonnen am 6. Feb 2008 · letzter Beitrag vom 7. Feb 2008
Antwort Antwort
varzil

Registriert seit: 25. Nov 2007
5 Beiträge
 
#1

Fehler beim Stringvergleich/Erkennt Objekt nicht

  Alt 6. Feb 2008, 12:03
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
while not a[i]=grid.cells[x,0] do es anders schreibe: while a[i]<>grid.cells[x,0] do Bekomme ich den Fehler "Undefinierter Bezeichner: 'grid'
Ich hoffe ihr könnt mir helfen, danke.
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht

  Alt 6. Feb 2008, 12:06
Hi,

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

while not (a[i]=grid.cells[x,0]) do
Gruß
Norman
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#3

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht

  Alt 6. Feb 2008, 12:07
Und woher weiß die Funktion was "grid" ist?
  Mit Zitat antworten Zitat
varzil

Registriert seit: 25. Nov 2007
5 Beiträge
 
#4

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht

  Alt 6. Feb 2008, 12:12
Mir is eben ne Erleuchtung gekommen und hab mir genau die selbe Frage gestellt wie Nuclear-Ping.
Habs jetzt umgeschriebenwhile 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.
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#5

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht

  Alt 6. Feb 2008, 12:30
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;
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
varzil

Registriert seit: 25. Nov 2007
5 Beiträge
 
#6

Re: Fehler beim Stringvergleich/Erkennt Objekt nicht

  Alt 7. Feb 2008, 15:04
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!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:52 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