Forum: PC-Programmierung Lazarus.Aus String ein Zeichen herrauslesen


von Karl (Gast)


Lesenswert?

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

von Stefan S. (Gast)


Lesenswert?

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.

von Stefan S. (Gast)


Lesenswert?

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.

von Karl (Gast)


Lesenswert?

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 ;)

von Georg (Gast)


Lesenswert?

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

von Karl (Gast)


Lesenswert?

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

von Stefan S. (Gast)


Lesenswert?

Als ich "beim Compelieren" las hatte ich ja schon so eine Ahnung...

von Karl (Gast)


Lesenswert?

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...

von Bernd K. (prof7bit)


Lesenswert?

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.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.