Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Text-Auslesen (https://www.delphipraxis.net/99242-problem-mit-text-auslesen.html)

lacky 9. Sep 2007 00:12


Problem mit Text-Auslesen
 
Hallo an alle,
Ich habe folgendes Problem, ich möchte gerne einem richeditfeld folgende zeile hinzufügen:
Code:
richedit1.Lines.Add('You hit '+ gegnername[z] + ' for ' + inttostr(schaden) + ' points of damage.');
Was ich hier erreichen will ist denk ich einfach zu sehn, jedoch bekomm ich jedesmal ne fehlermeldung wenn das ereignis eintreten soll, und letztendlich ist dann in meinem textfeld nur zu sehn "You hit goblin" (in meinem textbeispiel der name).
Das liegt wohl an dem gegnername[z] (ein string array), denn wenn ich das weglasse funzt es problemlos... aber eigentlich müsste es doch so funktionieren, vor allem wird ja trotz der fehlermeldung und dass es nicht funktioniert der name aus dem array korrekt ausgelesen und eingefügt... :gruebel:

wisst ihr woran das liegen könnte und was ich falsch mache?

DGL-luke 9. Sep 2007 01:41

Re: Problem mit Text-Auslesen
 
Delphi-Quellcode:
var
  gegnername: array of string;
  z, schaden: Integer;
begin
  //...//

  if z < Length(gegnername) then
    Richedit1.Lines.Add(Format('You hit %s for %d damage',[gegnername[z],schaden]));
end;
Wenn dat 'n Fehler jibt, dann fress ick 'n Bes'n mitsamt der Hex'.

lacky 9. Sep 2007 02:39

Re: Problem mit Text-Auslesen
 
na dann mal guten appetit :mrgreen:
also das klappt leider auch nicht... aber ich vermute dass der fehler irgendwo anders liegt.. ich les die namen ja aus ner textdatei aus, vielleicht wird da irgendwas falsch ausgelesen, ich muss mal nochmal alles durchschaun..
aber danke für die hilfe

marabu 9. Sep 2007 07:45

Re: Problem mit Text-Auslesen
 
Hallo,

füge vor dem Hinzufügen des Namens mal eine Kontrolle ein:

Delphi-Quellcode:
begin
  // ...
  ShowMessage(IntToStr(Length(gegnerName[z])) + ': ' + gegnerName[z]);
  richedit1.Lines.Add('You hit '+ gegnername[z] + ' for ' + inttostr(schaden) + ' points of damage.');
  // ...
end;
Wenn die ausgegebene Längenangabe nicht deiner Erwartung entspricht, dann hast du beim Einlesen von gegnerName Null-Zeichen erwischt, die bei vielen internen String-Operationen als Ende der Zeichenkette interpretiert werden.

Wie hast du die Variable gegnerName[] deklariert? Wie füllst du sie?

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 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