AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Inkompitable Typen im Bezug auf Ord(Str) als Spaltenangabe
Thema durchsuchen
Ansicht
Themen-Optionen

Inkompitable Typen im Bezug auf Ord(Str) als Spaltenangabe

Ein Thema von Chrissi91 · begonnen am 11. Apr 2008 · letzter Beitrag vom 11. Apr 2008
Antwort Antwort
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#1

Inkompitable Typen im Bezug auf Ord(Str) als Spaltenangabe

  Alt 11. Apr 2008, 14:13
Hi,

ich grübel schon seit gestern Abend und bin immer noch der Meinung, dass alles eigentlich stimmt.

Ich habe 2 Arrays.

Stat: Array[1..26, 1..2] of String; (lokal)
Table: Array[1..1000, 1..20] of String; (global)

Es geht nur um dieses Stückchen Code:

Stat[Ord(Table[J, Col])-64, 2] := ... J ist vom Typ Integer als lokale Variable, die als Zähler der For-Schleife dient und Col ist ein Parameter meiner Funktion, auch Integer.

Wichtig: Im Array "Table" sind nur Großbuchstaben! D.h.beim A will ich eine 1 kriegen (deshalb minus 64), bei Z eine 26.

Kommentar: [Error] Main.pas(134): Incompatible types

Ord() liefert Integer und erwartet einen String. Sollte doch eigentlich alles okay sein.

Wenn ich jetzt mache:

Stat[Ord(StrToInt(Table[J, Col]))-64, 2] Diese Zeile macht keinen Sinn, aber Delphi kompiliert munter, ohne zu meckern. Erst beim Ausführen dieser Zeile sagt er mir, dass 'W' nicht in Integer umgewandelt werden könne. Das ist ja auch logisch. Aber warum will er für Ord() Integer haben? Ord macht doch aus einem Buchstaben den Ascii-Code ...

Jetzt kommt es in meinen Augen noch besser. Ich änder kaum etwas im Code, sondern mach ihn ein bisschen kürzer:

Stat[Ord(Table[1, 1])-64, 2] Selbst Fehler ... Okay ...

Stat[Ord('W')-64, 2] Jetzt sagt er auf einmal alles okay. Dabei ist doch Table vom Typ String ...

Bitte helft mir ...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga

  Alt 11. Apr 2008, 14:23
Du übergibst Ord() einen ganzen String anstatt nur ein Buchstaben. Delphi-Referenz durchsuchenOrd() will kein String, wie du behauptest, das ist falsch. Ein String ist kein Ordinaltyp, ein Zeichen schon. Was sollte denn Ord() zurückliefern, wenn du ihm "Das ist ein ganz langer String" gibst? Die Quersumme der Zeichen?

Bei deinem Ord('W') ist es kein String, sondern du definierst ein Zeichen.
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#3

Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga

  Alt 11. Apr 2008, 14:24
da is aber nur ein buchstabe drin. meinst du ich soll das array vom typ char machen?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga

  Alt 11. Apr 2008, 14:27
Zitat von Chrissi91:
da is aber nur ein buchstabe drin. meinst du ich soll das array vom typ char machen?
Da können aber auch 20 Buchstaben drinne sein. Da der Inhalt der Variablen nur zur Laufzeit feststeht, kann Delphi dies entsprechend nicht beim Erstellen des Programms wissen. Somit musst du angeben welches Zeichen du meinst.
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#5

Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga

  Alt 11. Apr 2008, 14:29
Wenns dir eh immer nur auf den ersten Buchstaben ankommt, könnte doch (ungetestet) das hier helfen:

Stat[Ord(Table[J, Col][1])-64, 2] := ... Liefert ord ein Char und macht den Compiler glücklicher.

(edit: Wobei char wohl auch der passendere Datentyp für dein Array wäre, wenn da eh immer nur chars drinstehen...?)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga

  Alt 11. Apr 2008, 14:29
.. es schaut zwar etwas merkwürdig aus:

Stat[Ord(Table[J, Col][1])-64, 2] := ... sollte aber funktionieren.

Besser wäre ein Array of Char.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#7

Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga

  Alt 11. Apr 2008, 14:32
Zitat von Klaus01:
.. es schaut zwar etwas merkwürdig aus:

Stat[Ord(Table[J, Col][1])-64, 2] := ... sollte aber funktionieren.

Besser wäre ein Array of Char.

Grüße
Klaus
Cool, danke. Wieder was neues gelernt. Die Möglichkeit nen [1] hinterzumachen kannte ich noch gar nicht. Ich wollte es erst mit Copy versuchen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga

  Alt 11. Apr 2008, 14:37
Copy wäre auch nicht gegangen, da der Rückgabewert ja wieder ein String wäre.
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


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:48 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