![]() |
Inkompitable Typen im Bezug auf Ord(Str) als Spaltenangabe
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:
Delphi-Quellcode:
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.
Stat[Ord(Table[J, Col])-64, 2] := ...
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:
Delphi-Quellcode:
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 ...
Stat[Ord(StrToInt(Table[J, Col]))-64, 2]
Jetzt kommt es in meinen Augen noch besser. Ich änder kaum etwas im Code, sondern mach ihn ein bisschen kürzer:
Delphi-Quellcode:
Selbst Fehler ... Okay ...
Stat[Ord(Table[1, 1])-64, 2]
Delphi-Quellcode:
Jetzt sagt er auf einmal alles okay. Dabei ist doch Table vom Typ String ...
Stat[Ord('W')-64, 2]
Bitte helft mir ... :pale: |
Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga
Du übergibst Ord() einen ganzen String anstatt nur ein Buchstaben.
![]() Bei deinem Ord('W') ist es kein String, sondern du definierst ein Zeichen. |
Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga
da is aber nur ein buchstabe drin. meinst du ich soll das array vom typ char machen?
|
Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga
Zitat:
|
Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga
Wenns dir eh immer nur auf den ersten Buchstaben ankommt, könnte doch (ungetestet) das hier helfen:
Delphi-Quellcode:
Liefert ord ein Char und macht den Compiler glücklicher.
Stat[Ord(Table[J, Col][1])-64, 2] := ...
(edit: Wobei char wohl auch der passendere Datentyp für dein Array wäre, wenn da eh immer nur chars drinstehen...?) |
Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga
.. es schaut zwar etwas merkwürdig aus:
Delphi-Quellcode:
sollte aber funktionieren.
Stat[Ord(Table[J, Col][1])-64, 2] := ...
Besser wäre ein Array of Char. Grüße Klaus |
Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga
Zitat:
|
Re: Inkompitable Typen im Bezug auf Ord(Str) als Spaltenanga
Copy wäre auch nicht gegangen, da der Rückgabewert ja wieder ein String wäre.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz