AGB  ·  Datenschutz  ·  Impressum  







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

Operator is auf diesen Operandentyp nicht anwendbar

Ein Thema von Tempest08 · begonnen am 20. Jun 2008 · letzter Beitrag vom 22. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Tempest08

Registriert seit: 20. Jun 2008
12 Beiträge
 
#1

Operator is auf diesen Operandentyp nicht anwendbar

  Alt 20. Jun 2008, 14:56
Bei im Betreff genannter Fehlermeldung spricht der Marker auf unten mit "[_]" markierte Stelle

Delphi-Quellcode:
type
  TZeiger =^TSportler;
  TSportler = record
                name : string[50];
                zeit : real;
                next : TZeiger;
              end;


procedure TForm1.Loeschen1Click(Sender: TObject);
var handle: string[50];
    time: real;
    vor: TZeiger;

begin
  handle:= StringGrid1.Cells[x, y];
  time:= StrToFloat(StringGrid1.Cells[x+1, y]);
  sportler:= schnellster;
  while handle <> sportler^.name and sportler^.zeit <>[_] time // Fehlermeldung
...
Weiß jemand woran es liegen könnte? :\
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 20. Jun 2008, 14:59
Hi,

Du musst die einzelnen Bedingungen in Klammern setzen:

if (a = b) and (not c) then genauso halt auch bei while und repeat...

In deinem Quelltext

sportler^.name and sportler^.zeit denkt der Compiler du willst

sportler^.name AND sportler^.zeit

rechnen, also diese beiden Werte miteinander verknüpfen. Und das funktioniert bei Strings eben nicht, weshalb angezeigt wird, das man das and nicht im Bezug auf Strings benutzen kann.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Tempest08

Registriert seit: 20. Jun 2008
12 Beiträge
 
#3

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 20. Jun 2008, 15:01
..... danke
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 20. Jun 2008, 15:31
Das AND wiegt stärker als das <>.
Daher muss man Klammern setzen.

if (a <> b) AND (c <> d) then

Siehe auch den Abschnitt "Operatoren" in der Delphi-Hilfe.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Tempest08

Registriert seit: 20. Jun 2008
12 Beiträge
 
#5

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 22. Jun 2008, 17:48
Nochmal ich... Kann mir jemand erklären, warum nach folgendem Quellcode einschließlich oben geschriebener Deklaration nichts im StringGrid ausgegeben wird??
Delphi-Quellcode:

procedure TForm1.FormActivate(Sender: TObject);
var n: integer;
begin
  vor:= nil;
  Schnellster:= nil;
  gespeichert:= false;
  with StringGrid1 do begin
    ColCount:= 3;
    RowCount:= 31;
    Cells[1, 0]:= 'Name';
    Cells[2, 0]:= 'Zeit';
  end;
  anzahl:= 0;
  for n:= 1 to 30 do StringGrid1.Cells[0, n]:= IntToStr(n);
end;


procedure TForm1.Einfuegen1Click(Sender: TObject);
begin
  form2.show;
  ausgeben;
end;


procedure TForm1.Ausgeben;
var yPos: integer;
begin
  for yPos:= 1 to 30 do begin
    StringGrid1.Cells[1, yPos]:= '';
    StringGrid1.Cells[2, yPos]:= '';
  end;
  sportler:= schnellster;
  ypos:= 1;
  while sportler <> nil do begin
    StringGrid1.Cells[1, yPos]:= sportler^.name;
    StringGrid1.Cells[2, yPos]:= FloatToStr(sportler^.zeit);
    sportler:= sportler^.next;
    ypos:= ypos+1;
  end;
end;

   
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  y:= ARow;
end;


procedure TForm1.Loeschen1Click(Sender: TObject);
var handle: string[50];
    time: real;
begin
  handle:= StringGrid1.Cells[1, y];
  time:= StrToFloat(StringGrid1.Cells[2, y]);
  sportler:= schnellster;
  while (handle <> sportler^.name) and (sportler^.zeit <> time)
    do begin
      vor:= sportler;
      sportler:= sportler^.next;
    end;
  vor^.next:= sportler^.next;
  dispose(sportler);
  ausgeben;
end;


procedure TForm2.EinfuegenClick(Sender: TObject);
var neu: TZeiger;
begin
  new(neu);
  neu^.name:= NameEd.Text;
  neu^.zeit:= StrToFloat(ZeitEd.Text);
  if schnellster = nil
    then schnellster:= neu
    else begin
      neu^.next:= schnellster;
      schnellster:= neu;
    end;
  gespeichert:= false;
  Form2.hide;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 22. Jun 2008, 17:50
Tja, was klickst Du denn, wenn nichts ausgegeben wird?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Tempest08

Registriert seit: 20. Jun 2008
12 Beiträge
 
#7

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 22. Jun 2008, 18:13
den Einfügen-Button (im Anhang zu sehen)

Edit:

Ich habe den Fehler vermutlich gefunden, allerdings tut sich ein neues Problem auf

Delphi-Quellcode:
procedure TForm2.EinfuegenClick(Sender: TObject);
var neu: TZeiger;
begin
  new(neu);
  neu^.name:= NameEd.Text;
  neu^.zeit:= StrToFloat(ZeitEd.Text);
  if schnellster = nil
    then schnellster:= neu
    else begin
      neu^.next:= schnellster;
      schnellster:= neu;
    end;
  gespeichert:= false;
  form1.ausgeben; // muss hier stehen und nich in Einfuegen1Click, da sonst nichts ausgegeben wird
  Form2.visible:= false;
end;
Leider bekomme ich jetzt einen EAccessViolation Fehler an eben der Stelle, die mit // beschriftet ist
Miniaturansicht angehängter Grafiken
unbenannt_982.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 22. Jun 2008, 18:26
Ich bin im Moment zu blau, um mir das im Einzelnen anzuschauen, aber lies mal hier: http://www.delphipraxis.net/internal...t.php?t=132884
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Tempest08

Registriert seit: 20. Jun 2008
12 Beiträge
 
#9

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 22. Jun 2008, 18:29
Ich hab Zeigerverkettungen grundsätzlich drauf, ich knobel da jetzt schon recht lang dran und finde einfach nicht das Problem...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Operator is auf diesen Operandentyp nicht anwendbar

  Alt 22. Jun 2008, 18:30
Wie gesagt, heute nicht mehr, sry, da können Andere ran.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 14:59 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