Lazarus.Aus String ein Zeichen herrauslesen

Gast #4843688
Hallo Leute,

ich stehe irgendwie auf dem Schlauch. Ich bekomme immer beim Compelieren 
eine Warnmeldung mit Abbruch : External SigSegv wenn ich den Code 
verwende:

txt:string;
a_byte: byte;

txt:='Das ist ein Test';

a_byte=ord(txt[1]); (Hier kommt dann die Fehlermeldung)


kann ich nicht einfach mit txt[x] auf die xte Stelle vom String 
zugreifen und die Ascii-Zahl vom Buchstaben mit 'ord' ermitteln?
Habe schon versucht den einen Buchstaben in eine Variable vom Typ Char 
zu übergeben, aber das klappt nicht weil 'txt' ein AnsiString 
ist.....was mache ich falsch? Ich will doch  nur von einem String einen 
einzelnen Buchstaben rauslösen und dessen Stelle in der ASCII-Tabelle 
ermitteln....vielen Dank
Gast
Wenn Du es so schreibst wie oben angegeben, wird es nicht funktionieren. 
Lazarus ist doch Pascal, und für die Zuweisung wird in Pascal ":=" 
verwendet. Hast Du ja auch bei der Stringzuweisung.
Gast
Wobei, wenn ich mich so erinnere -- ganz zu Anfang deines Beispiels 
steht ja wohl zunächst das Schlüsselwort VAR. Und dann muss da doch auch 
ein BEGIN stehen, oder hat Lazarus das nun doch optional gemacht?

Warum Du heute noch Pascal verwenden magst, oder warum du nicht mal kurz 
"delphi string to char" bei Google eingibst must du selber wissen.
Gast
Danke Leute,  aber über die Syntax braucht ihr euch keinen  Kopf zu 
machen,  die stimmt natürlich im Programm ;)....und meine Frage richtet 
sich nur an Leute mit Erfahrung in Lazarus ;)
Gast
Karl schrieb:
> aber über die Syntax braucht ihr euch keinen  Kopf zu
> machen,  die stimmt natürlich im Programm ;

So macht man sich überaus beliebt: etwas falsch schreiben und dann 
diejenigen, die darauf hinweisen, in unfreundlichem Ton zurechtzuweisen, 
das sollte sie nicht beachten.

Karl schrieb:
> meine Frage richtet
> sich nur an Leute mit Erfahrung in Lazarus ;

Noch beliebter: vorschreiben wer antworten darf und wer nicht. Geht's 
noch?

Es steckt da zwar noch ein weiterer Fehler drin, aber wer weiss schon ob 
man das schreiben darf. Dann such sie eben selber.

Georg
Gast
und der nächste Troll,  der verpeilt um was es geht aber sich moralisch 
berufen sieht, fachfremd aber mit erhobenem Finger zu antworten...ich 
habe nichts falsch geschrieben,  der Compiler würde solche Fehler 
erkennen und darauf hinweisen. ergo käme gar nicht erst der Abbruch. 
.....2 und natürlich möchten bitte nur die Leute antworten, die wissen 
um was es gehtm Ubd dazu gehörst du definitiv nicht,  wie du eben 
eindrucksvoll gezeigt hast....also provoziere nicht bzw trolle woanders. 
danke
Gast
tja, und als ich "wenn ich mich erinnere" und der Hinweis auf var und 
begin, hatte ich keine Ahnung, ich wußte, daß du nix beitragen kannst


so, das Problem ist nicht weg zu bekommen, eigentlich sollte es 
problemlos mit txt[x] zu hand haben sein. Ist es aber nicht. Auch

kar: char;

kar:=txt[1];

funktioniert nicht. Es kommt keine Compiler/Debugger-Fehlermeldung, 
sondern direkt der Laufzeitfehler SigSegv....es muß da also einen Bug in 
Lazarus bei mir geben. Neueste Version 1.6.2 32-bit mit einem frischen 
XP SP3...
Dann poste doch endlich mal den kompletten Code, denn an dem 
unvollständigen Schnipsel den Du da geschrieben hast liegt es definitiv 
nicht, der Fehler liegt ganz wo anders.

Vermutung: Du führst die zweite Zeile vor der ersten aus (die String 
Variable enthält noch gar nichts (nil oder leerer String)) weil das was 
Du da gepostet hast nicht dem enspricht was Du in Wirklichkeit 
verwendest. Also zeig das komplette Programm.

Oder nimm einfach mal den Debugger und steppe durch, dann siehst Du es 
selbst.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.