String länger 255 , 2.Teil

Hallo nochmal,

kann ich nun unter Delphi auch strings mit einer festen Länge größer 255 Zeichen definieren - also zB einen String mit der Länge 500 Zeichen (unter VisualBasic funktioniert das doch supereinfach) ?

Danke für die erneute Hilfe,
Swen

Hallo Swen,

es ist eigentlich ganz einfach.

var s:string[500];

Gruß Thomas

P.S: Beachte, die ANtworten zu deiner ersten Frage!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

es ist eigentlich ganz einfach.

var s:string[500];

Hi Thomas,

da irrst Du Dich leider gewaltig.

Gruß
Martin

Hi Thomas,

da irrst Du Dich leider gewaltig.

Gruß
Martin

Hi Martin,

hast recht, so geht es wirklich nicht. Ich hab etwas zu schnell getippt und anstatt 50 500 geschriebgen. (D’OH)

So würde es funktionieren:

var s:string[50];

(Niucht der Sinn der Sache)

Gruß Thomas

OK, ein neuer Verscuh, erhat was mit der Binärform eines Strings zu tun. Im Shortstringist beinhaltet das erste Byte die Länge des Strings und die rechtlichten 255 Byte den Zeichen in ASCII.

0: Laenge
1: 1. Zeichen
2: 2. Zeichen
usw.

Also hab ich folgenden Vorschlag (schnell aus dem Hirn, mein Compi ist am A…):

type TStr500 = class
 inhalt:array[1..500]of byte;
 laenge:word;
 function read:ansistring;
 procedure write(s:ansistring);
 ...
 end;
{}
function TStr500.read:ansistring;
var i:word;aus:ansistring;
begin
aus:='';
For i:=1 to laenge do
 aus:=aus+chr(inhalt[i]);
read:=aus;
end;
{}

procedure Tstr500.write(s:ansistring);
var i:word;
begin
laenge:=length(s);
For i:=1 to lanege do 
 inhalt[i]:=ord(inh[i]);
end;

So, du siehst, wie komplex das ist. Ich empfehle dir, benutze ansistring (wie ich in der Ein-/Ausgabe von diesem Objekt). Solltest du das Pech haben, dass du keine Ansistrings benutzen kannst, dann empfehle ich dir, hol dir eine neuere Version von Delphi. (nur Delphi 1 benutzt shortstrings).

Gruß Thomas

und jetzt ?
Hi freaks,

ihr seid ja lustig ! Mir zu zeigen wie es nicht geht !

Kann ich Euren Postings jetzt entnehmen, dass diese Variablendefinition unter Delphi nicht möglich ist ?

Aber fast jeder Delphi-Programmierer hat doch bestimmt schon einmal soetwas gebraucht.
Ich benötige das Ganze, um einen Record zu defnieren, den ich danach als Datensätze in eine Datei abspeichern will (daher die feste länge der Strings erforderlich).

Ein soclhes Problem muss doch unter Delphi gelöst werden können, oder ?

Swen

Es

Hi freaks,

ihr seid ja lustig ! Mir zu zeigen wie es nicht geht !

Kann ich Euren Postings jetzt entnehmen, dass diese
Variablendefinition unter Delphi nicht möglich ist ?

Aber fast jeder Delphi-Programmierer hat doch bestimmt schon
einmal soetwas gebraucht.
Ich benötige das Ganze, um einen Record zu defnieren, den ich
danach als Datensätze in eine Datei abspeichern will (daher
die feste länge der Strings erforderlich).

Ein soclhes Problem muss doch unter Delphi gelöst werden
können, oder ?

Swen

Siehe mein zweites Posting von 19:51!

Hi freaks,

ihr seid ja lustig ! Mir zu zeigen wie es nicht geht !

Kann ich Euren Postings jetzt entnehmen, dass diese
Variablendefinition unter Delphi nicht möglich ist ?

Aber fast jeder Delphi-Programmierer hat doch bestimmt schon
einmal soetwas gebraucht.
Ich benötige das Ganze, um einen Record zu defnieren, den ich
danach als Datensätze in eine Datei abspeichern will (daher
die feste länge der Strings erforderlich).

Ein soclhes Problem muss doch unter Delphi gelöst werden
können, oder ?

Swen

Hallo Swen,

wieso hast du nicht gleich gesagt, dass du eine Lösung zum Speichern brauchst. Benutzt du Blockread, Blockwrite?
Wenn ja, dann ist es ganz einfach.
Einfach vorher den Speicherbedarf des Records abspeichern!
Den Speicherbedarf eines Records kriegst du mit „sizeof“.

Gruß Thomas

Hi Thomas,

ich dank’ Dir wie verrückt !

Ich dachte shcon, ich kann Delphi in die Ecke werfen.

Schönen Abend noch,
Swen

Hi,

noch ne dumme Frage hinterher…wozu das Ganze??
Wenn Du die Variable als AnsiString definierst kannst du darin ablegen was immer du brauchst. Mir fällt auf die Schnelle keine vernünftige Anwendung für eine selbstdefinierte Stringklasse mit fester Länge ein…

Gruss RQ