Zitat von
SebE:
Zitat:
Aha. Und da nimmst du den DCC für? Interessant.
Woher nimmst du dir diese Annahme?
Dass hab ich nie gesagt.
Du postest in einem Delphi-Forum ohne weiter zu erwähnen, daß du einen anderen Compiler benutzt. Was sollen wir denken? Daß du in ALGOL programmierst?
Zitat von
SebE:
Ich wollte eine Art Liste mit konkreten ZeilenLängen für eine Art Screen-Objekt basteln,
welches den Inhalt des Video-Rams managen soll.
Eben, PChar.
Pseudocode:
Code:
var
lines: array[0..numlines - 1] of PChar;
backbuffer = getmem(linelength * numlines);
for i := 0 to numlines - 1 do
begin
lines[i] := backbuffer + (i * linelength);
end;
Beschafft dir ein Array mit Zeilen, bei dem jeder Array-Eintrag eine Zeile repräsentiert. Musst nur aufpassen, daß du nicht über das Ende einer Zeile hinwegschreibst, dann landest du nämlich in der nächsten. Für die Architektur wird vorrausgesetzt, daß das erste Byte eines Backbuffers/Videospeichers auch das linke, obere Zeichen ist und anschließend Zeilenweise von links nach rechts und von oben nach unten gelaufen wird.
Zitat von
SebE:
Die Liste hat den Sinn, um beim Scrollen immer den aktuellen Inhalt nachzuladen.
Ist halt bei PChars mehr Aufwand, weil du Speicher durch die gegend schieben musst und nicht mit Verweisen und der Compiler Magic arbeiten kannst.
Du kannst auch nach wie vor ein array[0..linelength-1] of char nehmen, dann ist die gesamte Zeile eine Entität und nicht nur der Zeiger auf das erste Zeichen. Macht allerdings nur wenig Unterschied im Handling.
Zitat von
SebE:
Es ist für mich daher einfacher, wenn es eine Möglichkeit gäbe, einen neuen Zeichenkettentyp zu erstellen.
Dafür gibt es kein syntaktisches Element, Strings sind zu einem großen Zeil Compiler Magic pur. Du hast den Quellcode deines Compilers, entweder, du schreibst dir deinen eigenen Zeichenkettentyp in den Compiler und hast dabei den Aufwand, oder du machst es in deiner Anwendung und hast dort den Aufwand. Den deutlich kleineren Aufwand sehe ich in der eigenen Anwendung.
Zitat von
SebE:
Das ist halt der Vorteil von C.
Warum benutzt du dann nicht C?