AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Parameter der Pfadangabe enthält herrausfinden
Thema durchsuchen
Ansicht
Themen-Optionen

Parameter der Pfadangabe enthält herrausfinden

Ein Thema von Back2Code · begonnen am 11. Okt 2013 · letzter Beitrag vom 11. Okt 2013
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#1

AW: Parameter der Pfadangabe enthält herrausfinden

  Alt 11. Okt 2013, 10:37
Nur um es mal zu erklären:

Bei Strings kann Delphi, anhand der im "String" versteckten Encoding-Informationen auch unterschiedliche Strings vergleichen.
Bei Char (WideChar) und AnsiChar geht das untereinander leider nicht so gut, weswegen Delphi hier eine "Warnung" anzeigt.
Wobei die Fehlermeldung hier ja eigentlich "'char' zu 'ansichar'" heißen müßte, da aber der Compiler vermutlich versuchte das Problem aufzulösen, ist er erst bei "'string' zu 'ShortString'" gescheitert.

Rechts das OR ist ein Binäres und aus if cParam <> '-or '/then wird ein if cParam <> ('-or '/') then , bzw. if cParam <> Chr(Ord('-') or Ord('/')) then .
Hier wird also zuerst das OR aufgelöst, wobei Delphi hierbei die Chars als erstmal AnsiChar interpretiert. Den Char-Konstante direkt mit dem WideChar (cParam) verbinden, kann der Compier das erkennen und die Konstante ebenfalls als WideChar verwenden.


Delphi-Quellcode:
if cParam <> AnsiChar(Ord('-') or Ord('/')) then
if cParam <> AnsiChar($2D or $2F) then
if cParam <> AnsiChar($2F) then

if cParam <> '/then
Besseres Beispiel (OK, abgesehn davon, daß das Zeichen 127 nicht so schön darstellbar ist)
Delphi-Quellcode:
if cParam <> ('-or '[') then // $2D or $5B = $7F

if cParam <> Chr(127) then // $7F
Und hier knallt es natürlich:
Delphi-Quellcode:
var cParam: string;

if cParam <> 'abcor '123then
(Char ist ein ordinaler Typ, bei dem man mathematische und binäre Operationen anwenden kann, was beim String nicht geht)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Okt 2013 um 10:44 Uhr)
  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 13: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