AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit inc(...)

Ein Thema von -TheCoke- · begonnen am 25. Sep 2008 · letzter Beitrag vom 25. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2   
-TheCoke-

Registriert seit: 15. Sep 2007
22 Beiträge
 
#1

Problem mit inc(...)

  Alt 25. Sep 2008, 15:39
Hallo!

Ich versuche folgenden Delphi 7 Code für Delphi 2009 umzuschreiben:

Delphi-Quellcode:
string1: String;
string2: String;
A: TStrArray;

{...}

string1 := #$04;
inc(byte(string1[1]),StrToInt(A[5]));
string2 := #$06;
inc(byte(string2[1]),StrToInt(A[5]));
Dies hat in Delphi 7 noch wunderbar funktioniert.

In Delphi 2009 kommt allerdings der Fehler: "Der Linken Seite kann nichts zugewiesen werden".

Ich hab nun bereits mehrere Methoden versucht, dass Ergebnis hat aber leider nie gepasst.

Hat jemand ne Idee?

Coke
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 15:52
Hallo,

in welcher Zeile kommt der Fehler?
Es könnte damit zusammenhängen, ob eine strenge Prüfung von Var-Strings vorgenommen wird oder nicht.
Was ist, wenn string1 = '' und darauf ein Inc und wenn in StrToInt(A[5]) etwas steht, das zusammen mit string1[1] mehr als 255 ergibt? Klar das geht, aber ich finde es mutig

Stephan
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#3

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 15:56
ist ein zeichen nicht 2 byte gross?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.242 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 15:56
Als String deklariert schon, als AnsiString nicht.
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
-TheCoke-

Registriert seit: 15. Sep 2007
22 Beiträge
 
#5

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 16:31
Der Fehler kommt jeweils bei den beiden Zeilen die mit inc(.. anfangen.

Coke
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#6

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 16:37
Das schöne ist ja, das CodeGear auch mal wieder was verbessert an seiner Sprache.

Srring[x] liefert ein Char. Byte() macht dann einen Typecast. Der Typecast wiederrum ist eine einmalige Sache und somit nur in eine Richtung nutzbar und daraus folgt, es ergibt ein konstantes Objekt. Früher hatte der Compiler auf sowas nicht geachtet, aber nun meckert er richtigerweise, da eine Typumwandlung immer einen konstantes Element liefert.

Du musst deinen Code umschreiben bzw. kannst die Compiler-Magic-Optimierung von Inc() in diesem Falle nicht anwenden.

Es könnte aber ohne Typecast vllt. noch gehen:
Inc(string[1], chr(StrToInt(...))); Ist ungetestet.
  Mit Zitat antworten Zitat
jottkaerr

Registriert seit: 2. Jul 2007
Ort: Tuttlingen
80 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 16:41
Dein Code funktioniert nicht mehr, weil ein gecastetes Objekt nur dann als var-Parameter übergeben werden kann, wenn die Größen des Objekts und des Datentyps, in den gecastet wird, übereinstimmen. Byte(AnsiChar) kann also an Inc() übergeben werden, Byte(WideChar) nicht.

[edit]Ach ja, ich habe die Lösung vergessen:
Code:
Inc(Word(string1[1]), StrToInt(A[5]));
sollte funktionieren.[/edit]

jkr
Jürgen Krämer
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#8

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 16:46
Zu früh gefreut, also hat CodeGear das immer noch nicht im Griff.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 16:56
Zitat von Roachford:
Zu früh gefreut, also hat CodeGear das immer noch nicht im Griff.
was sollte CG nicht im griff haben? dass sie bei einer word variable, nur das AH register incrementieren, wo die var im AX liegt?

so etwas passt nicht zu pascal, in C/C++ wäre das wohl kein problem, aber hier werden (glücklicherweise) die typen geprüft
  Mit Zitat antworten Zitat
-TheCoke-

Registriert seit: 15. Sep 2007
22 Beiträge
 
#10

Re: Problem mit inc(...)

  Alt 25. Sep 2008, 17:13
Danke, funktioniert
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 +2. Es ist jetzt 05:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf