Autor Beitrag
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: So 11.02.07 11:46 
Hallo,

Ich stehe gerade vor dem Problem, dass ich nicht weiß, wie viele zeichen eine Variable s: string maximal haben kann.

Bei TStrings ist doch eine Zeile auch manchmal länger als 255 Zeichen (zB. in einem Memo)?

Andererseits steht ja das erste byte für die Länge des strings s -> kann also nicht größer als 255 sein?
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 11.02.07 11:56 
Ein klassischer String kann max 255 Zeichen lang sein. Dieser heißt in der Zwischenzeit ShortString. Es gibt aber auch noch AnsiString, für welchen es keine Beschränkung in der Länge mehr gibt. Der Compiler entscheidet welcher bei Angabe von String verwendet wird, wenn nicht anders angegeben.

_________________
Markus Kinzler.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 11.02.07 12:00 
Das mit der Längenangabe in meinString[0] gilt für kurze Strings (oft auch als Pascal-String bezeichnet). Das sind die Dinger, die man per meinString: string[42]; deklariert, oder halt per Shortstring. "Normale Strings" sind AnsiStrings (so zumindest afaik die Standard-Einstellung).
Aus der Delphi-Hilfe:
Eine AnsiString-Variable ist ein Zeiger, der vier Byte Speicherplatz belegt. Wenn die Variable leer ist (also einen String der Länge Null enthält), hat der Zeiger den Wert nil, und der String belegt keinen Speicherplatz. Ist die Variable nicht leer, zeigt sie auf einen dynamisch zugewiesenen Speicherblock, der einen String-Wert enthält. Die acht Byte vor der Stelle enthalten eine Längenangabe und einen Referenzzähler von je 32 Bit.
Daraus folgt dann: maximale Länge eines Strings ist ca. 2^32.

_________________
We are, we were and will not be.
Jakob Schöttl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: So 11.02.07 12:02 
also ist das was in der Delphihilfe für absolute unter Beispiel steht wohl schon veraltet?
ausblenden Delphi-Quelltext
1:
2:
3:
var
  s: string;
  l: Byte absolute s;

weil wenn delphi automatisch wählt, dann ist l nicht immer die Länge von s - wenn ich das richtig sehe...
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: So 11.02.07 13:09 
Du kannst in den Compiler-Optionen einstellen, wie Delphi das Schlüsselwort 'string' interpretiert. Wenn daraus ShortString gemacht wird, dann stimmt das Beispiel, wenn daraus AnsiString gemacht wird, eben nicht.

Dessenungeachtet zeugt die Verwendung von 'absolute' von einem ziemlich miesen Programmierstil. Verwende es einfach nicht. Es gibt Nichts, was man nicht auch anders lösen könnte.

_________________
Na denn, dann. Bis dann, denn.
Jakob Schöttl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: So 11.02.07 13:30 
user profile iconalzaimar hat folgendes geschrieben:
Du kannst in den Compiler-Optionen einstellen, wie Delphi das Schlüsselwort 'string' interpretiert. Wenn daraus ShortString gemacht wird, dann stimmt das Beispiel, wenn daraus AnsiString gemacht wird, eben nicht.

Naja, ich lasse es dann bei der Standardeinstellung.
user profile iconalzaimar hat folgendes geschrieben:
Dessenungeachtet zeugt die Verwendung von 'absolute' von einem ziemlich miesen Programmierstil. Verwende es einfach nicht. Es gibt Nichts, was man nicht auch anders lösen könnte.

Naja, wenn ich in einer Stringbearbeitungsroutine 5 x Length(s) aufrufen muss, dann dachte ich es sei besser, wenn sich lenght einfach zusammen mit dem s ändert. Aber geht ja eh nicht mit der Standardeinstellung für string ;)
Airwolf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 92



BeitragVerfasst: Di 27.03.07 21:41 
Habe da auch ein Problem mit diesen Teilen.
Ihr sagt der wählt automazisch, bei mir jedoch nicht, da meckert er folgendermaßen:

[Fehler] Unit2.pas(73): String-Literale können maximal 255 Elemente besitzen

Ist aber von dringender Notwendigkeit dass ich da mehr Zeichen reinkriege, viel mehr.
Wie kann ich das machen?

Danke im voraus
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 27.03.07 21:50 
Vieleicht sagst Du mal was Du vorhast vieleicht gibt es da Alternativen.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Airwolf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 92



BeitragVerfasst: Di 27.03.07 22:14 
Naja, also, es ist ein Programm für die Schule.
Es soll für die 10 Klässler sein um sich auf die Oberstufe vorzubereiten.
Ich mache das für Bio. Das soll ne Art Multiple Choice Test sein. Ich habe nen Batzen fragen und die sollen natürlich per Zufallsgenerator abgerufen werden, wäre ja sonst auch langweilig. Die dazugehörigen Antworten (immer eine richtige und zwei falsche) sollen dann ebenfalls per Zufallsgenerator entweder als Antwort a, ob oder c erscheinen, wäre ja sonst auch sinnlos wenn es immer nach einem bestimmten Muster ablaufen würde oder die richtige Antwort wäre immer z.B. b.

Von daher, da ich leider keine Textfiles benutzen darf die ich auslesen lassen könnte, mache ich das mit Stringlisten.
Habe da eine Variable, beispielsweise Richtig als TStrings definiert, da kommt dann folgende Anweisung:

ausblenden Delphi-Quelltext
1:
Richtig:=TStringList.Create;					


und dann, um dieses Feld mit Fragen zu füllen mache ich eine "with Variable do" schleife, wo ich dann für jede Frage ein Add(''); verwende.
Das klappt an und für sich auch ganz gut bei den Fragen und Antworten, da die ja recht kurz gehalten sind.
Problem: Zu jeder Frage soll man sich einen Text anzeigen lassen, der einem die Sachen erklärt. Halt, warum das eine richtig ist und die anderen falsch sind.
Da liegt das Problem, diese Erklärungen sind alle viel zu lang für meine Strings. Kürzen will ich nicht, da ich das alles schon sehr knapp gehalten habe.

Tja, so viel zum Konzept.
Könnt ihr mir helfen?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 27.03.07 22:27 
Moin!

Zeig doch mal die Stelle (offensichtlich eine Zuweisung), die den Fehler erzeugt, aus deinem Quelltext; wie man ein TStringList-Objekt anlegt, ist ja nun nicht wirklich neu und ausserdem auch nicht die Fehlerstelle. :mahn: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 27.03.07 22:32 
Das liegt am Kompilieren - lade deine Daten zur Laufzeit aus Textdateien, so machst du dein Programm auch wesentlich einfacher zu warten. Du willst doch nicht wirklich wegen einem Tippfehler neu kompilieren, oder? ;)

Der Debugger hat ne 255-Zeichen Begrenzung.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 27.03.07 22:40 
Moin!

user profile iconKarlson hat folgendes geschrieben:
Das liegt am Kompilieren

Es ist durchaus möglich, Stringkonstanten >255 Zeichen im Code unterzubringen - selbst schon gemacht. Die Frage ist aber eben: wie!? ;)

user profile iconKarlson hat folgendes geschrieben:
lade deine Daten zur Laufzeit aus Textdateien,

Genau das scheint er aber - aus welchen Gründen auch immer - nicht zu wollen... :? (was deinen Vorschlag natürlich nicht schlechter macht!)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 27.03.07 22:47 
user profile iconNarses hat folgendes geschrieben:
Moin!

user profile iconKarlson hat folgendes geschrieben:
Das liegt am Kompilieren

Es ist durchaus möglich, Stringkonstanten >255 Zeichen im Code unterzubringen - selbst schon gemacht. Die Frage ist aber eben: wie!? ;)


Nun, ich denke das naheliegendste ist das in seinem Code irgendwo sowas steht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
var frage:string;
begin
 Frage:='256 zeichen langer string';
end


Und das ruft die genannte Fehlermeldung hervor. Allerdings stimm ich dir trotzdem zu, mit relevantem Code könnten wir uns das rätseln sparen.

Interessehalber: wie bindest du so grosse Strings zur Designzeit ein? Da will mir garnichts sinnvolles einfallen :gruebel:

Edit: Hab ne Lösung gefunden:

ausblenden Delphi-Quelltext
1:
var s:='Zeichen1-255'+'Zeichen256-510'+...;					


Das ist wohl ein internes Speicherproblem von Delphi. Oder ein Feature ;) Denn so lange Strings wird man ja ohnehin mehrzeilig in den Code eintragen. An den Zeilenanfang ein + zu machen sollte dann kein Problem sein.
Jakob Schöttl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Mi 28.03.07 14:26 
user profile iconKarlson hat folgendes geschrieben:
Edit: Hab ne Lösung gefunden:

ausblenden Delphi-Quelltext
1:
var s:='Zeichen1-255'+'Zeichen256-510'+...;					


Das ist wohl ein internes Speicherproblem von Delphi. Oder ein Feature ;) Denn so lange Strings wird man ja ohnehin mehrzeilig in den Code eintragen. An den Zeilenanfang ein + zu machen sollte dann kein Problem sein.


Aber in der Praxis entstehen Strings mit mehr als 255 Zeichen doch eh meistens mit einer schleife wie zB.

ausblenden Delphi-Quelltext
1:
for i := 0 to 1000000 do s := s + InttoStr(i);					
Airwolf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 92



BeitragVerfasst: Mi 28.03.07 19:09 
Ihr versteht mich nicht.

Mit Textdateien wollte ich es ja auch machen, war von anfang an mein Plan. Aber diese dumme Kuh von Infolehrerin hat's mir verboten und lässt partout nicht mit sich reden warum überhaupt. Versteht ihr? Ich würde es ja gerne machen, aber ich DARF es nicht.

Ich muss wie gesagt so lange Strings verwenden, da ich diese langen Texte ja irgendwie in den Quellcode integrieren muss (von daher isses auch egal wann ich das mache). Meine Strings sind ja auch nur bei den abschließenden Erklärungen so lang. Schließlich kann man die Fotosysnthese nicht mit drei Wörtern ausführlich erklären.

Ich schick euch mal nen Teil des Quelltextes.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
begin
  T:=TStringList.Create;
  Richtig:=TStringList.Create;
  Falscha:=TStringList.Create;
  Falschb:=TStringList.Create;
  Erklaerung:=TStringList.Create;
  case Thema.ItemIndex of
  0begin
       with Erklaerung do begin
       add('Die richtige Antwort war Autotrophe Assimilation. Diese beschreibt die Herstellung von energiereichen, einfachen, organischen Stoffen, die im weiteren Stoffwechselprozess zu komplexeren Molekülen umgewandelt werden können. Dazu benötigen sie Kohlenstoffdioxid, außerdem noch Energie und ein Reduktionsmittel. Die Heterotrophe Assimilation beschreibt dagegen den Aufbau körpereigener Stoffe aus organischen Stoffen die aus der Umgebung aufgenommen werden. Die Dissimilation beschreibt den Abbau körpereigener, organischer und energiereicher Stoffe wie z.B. Fette oder Kohlenhydrate zum Freisetzen von Energie in Form von Wärme oder ATP.');
       add('Hier war die richtige Antwort Licht. Jedoch ist sie nicht allein von der Energie des Lichts abhängig. Die Energie wird hauptsächlich dazu genutzt um die Reaktion erst einmal in Gang zu setzen. Dazu werden Fotosysteme genutzt, bestehend aus Proteinen und Pigment- Molekülen, die die Energie des Lichts wie ein Trichter auffangen.');
       add('Hier ist die richtige Antwort Chlorophyll. Dieser Stoff absorbiert die Lichtenergie und leitet sie zum, den im Fotosystem 1 liegenden, Reaktionszentrum, wo wiederum Chlorophyll dazu genutzt wird um eine Ladungstrennung in Gang zu bringen, wodurch Energie für die H2O- Spaltung gewonnen wird.');
       add('Tatsächlich besteht das Hauptziel der Lichtreaktion darin die nötigen Stoffe für die Dunkelreaktion bereitzustellen. Darunter zählen z.B. ATP und NADPH+H+. Diese Stoffe sind für die Dunkelreaktion nötig. Das ATP liefert Energie, NADPH+H+ liefert Energiereiche Elektronen.');
       add('Die FS ist eine endogene Reaktion. Das heißt das Energie in Form von Licht zugeführt werden muss, damit die Reaktion ablaufen kann.');
       add('Der Energiespeichernde Stoff wird ATP genannt (AdenosinTriPhopsphat). Die anderen beiden Stoffe sind zwar ebenfalls beteiligt, doch ATP ist der Energiespeicher. ADP (AdenosinDiPhosphat)  ist sozusagen die verbrauchte Version des ATP. Dieser Stoff funktioniert wie ein Akkumulator. Durch Anlagern  eines Phosphatrestes entsteht die Energiereiche Version ATP. Hierbei befindet sich die Energie in der Bindung, bei der Trennung dieser Bindung, ergo Abtrennung des Phosphatrestes wird die Energie freigesetzt. NADPH+H+ wird in der Lichtreaktion gebildet und liefert energiereiche Elektronen für die Dunkelreaktion.');
       add('Die richtige Bruttogleichung ist: 6CO2 + 12H2O ó C6H12O6  + 6H2O + 6O2; Das Kohlenstoffdioxid wird aufgeteilt, dessen Kohlenstoff wird bei der Bildung von Glucose benötigt, der Sauerstoff wird zur Hälfte für die Glucose und die andere Hälfte wird benötigt um Wasser herzustellen. Das Wasser wird ebenfalls geteilt. Der Wasserstoff wird zur Hälfte genutzt um Glucose herzustellen, die andere Hälfte findet sich wieder in Wasser wieder. Der Sauerstoff des Wassers liegt am Ende als reiner Sauerstoff vor.');
       add('Glucose kann zu Stärke umgewandelt werden, welche dann in Zellen als Energiespeicher angelagert werden. Die beiden andere Stoffe sind falsch, da Glucose selber ein Einfachzucker (Monosaccharid) ist. Durch Vergärung kann Alkohol entstehen, doch dies passiert nicht im Zuge der Fotosynthese. ');
       add('Bei der Fotosynthese wird CO2 verbraucht und es wird anschließend O2 abgegeben, was für uns den größten Nutzen hat, da es für den Menschen und alle sonstigen Lebewesen die Lebensgrundlage darstellt. Zwar können Blüten Duftstoffe absondern, doch dies ist nicht der Fotosynthese zuzuschreiben. Aus einigen Pflanzen kann man zwar tatsächlich Zucker gewinnen (Zuckerrohr, Zuckerrüben) doch dies ist die Ausnahme.');
       add('Die richtige Antwort war Windstärke. Sie beeinflusst die Fotosynthese höchstens auf die Weise dass die Pflanze bei zu hohen Windgeschwindigkeiten abknickt oder ähnliches, doch weiteren Einfluss hat die Windgeschwindigkeit nicht. Wassergehalt des Bodens und CO2 Gehalt der Luft sind dagegen entscheidend. Es wird viel H2O benötigt, das wird über die Wurzeln aufgenommen, somit ist die Konzentration im Boden wichtig, da eine Osmose (Diffusion/ Konzentrationsausgleich durch eine Membran) stattfindet. Ebenso verhält es sich mit dem CO2 Gehalt der Luft.');
       add('Tatsächlich steigert die Temperatur die Leistungsfähigkeit von Enzymen. Hierbei wird die RGT- Regel wirksam. Sie besagt: Je höher die Temperatur, desto aktiver werden Enzyme, jedoch nur bis zu einer bestimmten Temperatur, meist 40°C, manche Enzyme vertragen jedoch noch 60°C, jedoch nur wenige. Bei diesen kritischen Temperaturen zersetzen sich die Proteine. Da Enzyme aus Proteinen bestehen, lösen sich bei zu hohen Temperaturen die ganzen Enzyme auf. Der Effekt der schnelleren Teilchenbewegung ist hierbei zu vernachlässigen, des weiteren kann eine Pflanze bei hohen Temperaturen ihr Leitbündel nicht erweitern. ');
       add('Die Stomata sind dafür gedacht, verbrauchtes H2O, d.h. H2O das keine Nährstoffe mehr enthält, abzugeben. Daraus entsteht ein Transpirationssog, der dafür sorgt, das H2O von den Wurzeln in die höher gelegenen Laubblätter transportiert werden kann. Man kann sich dieses Prinzip als eine Unterdruckpumpe vorstellen. Dadurch entsteht eine kontinuierliche Versorgung mit H2O und Nährstoffen gegeben. Des weiteren findet durch die Stomata ein Gasaustausch statt.');
       add('Die Fotosynthese findet im Chloroplasten statt. Das liegt daran, das sich das Chlorophyll in den Chloroplasten befindet. Genauer gesagt befindet sich das Chlorophyll in den Thylakoidstapeln der Chloroplasten. Das Mitochondrium hingegen ist der Ort der Zellatmung und der Zellkern der Ort der DNA- Replikation. ');
       add('Die Fotosynthese wird in zwei Phasen unterteilt, die Lichtabhängige und die Lichtunabhängige Reaktion. Die Lichtabhängige Reaktion dient zur Bereitstellung der Stoffe für die Lichtunabhängige Reaktion, auch Calvin- Zyklus genannt. In diesem wird Glucose gebildet, die zu Stärke umgewandelt werden kann und in Zellen als Energiespeicher fungieren kann. ');
       end;
       with Richtig do begin
         Add('Autotrophe Assimilation ');  {1}
         Add('Licht');
         Add('Chlorophyll');
         Add('Bereitstellung aller nötigen Substanzen für die Dunkelreaktion ');
         Add('endogen');
         Add('ATP');
         Add('6CO2 + 12H2O ó C6H12O6 +6H2O + 6O2 ');
         Add('Stärke');
         Add('CO2 wird zu O2');
         Add('Windstärke');
         Add('Es sind Enzyme beteiligt, höhere Temperaturen sorgen für eine erhöhte Enzymaktivität ');
         Add('Erzeugen durch Gasaustausch einen Transpirationssog ');
         Add('Chloroplast ');
         Add('2');
       end;
       with Falscha do begin
         Add('Heterotrophe Assimilation ');  {1}
         Add('Enzymatische Reaktionen');
         Add('Schwefel');
         Add('Primäre Energiegewinnung');
         Add('exogen');
         Add('ADP');
         Add('6CO2 + 24H2O ó C6H12O6 + 6O2');
         Add('Alkohol');
         Add('Duftstoffe die den Geruch der Luft verbessern');
         Add('Wassergehalt im Boden');
         Add('Höhere Temperaturen lassen die Pflanzen ihre Leitbündel dehnen, somit können Stoffe schneller transportiert werden');
         Add('Aufnahme von H2O');
         Add('Mitochondrium');
         Add('1');
       end;
       with Falschb do begin
         Add('Dissimilation');  {1}
         Add('Es wir keine Energie benötigt');
         Add('Kohlenstoffmonooxid');
         Add('Umwandlung von CO2 in O2');
         Add('es ist keine thermische Energie beteiligt');
         Add('NADPH+H+');
         Add('3CO2 + 10 H2O ó C6H12O6 +2O2 +5O2');
         Add('Zucker');
         Add('Man kann Zucker aus Pflanzen gewinnen');
         Add('CO2 Gehalt der Luft');
         Add('Durch erhöhte Temperatur steigt die Geschwindigkeit der Teilchenbewegung, somit läuft die Fotosynthese schneller ab');
         Add('Lichteinlass für die Pflanze');
         Add('Zellkern');
         Add('3');
       end;
       with T do begin
         Add('Zu welchem Stoffwechselprozess gehört die Fotosynthese?');  {1}
         Add('Woher stammt bei der Fotosynthese die Energie zum Stoffaufbau?');
         Add('Welcher Stoff ist für die Fotosynthese unbedingt nötig?');
         Add('Was ist das primäre Ziel der Lichtreaktion?');
         Add('Was ist thermisch gesehen die Fotosynthese für eine Reaktion?');
         Add('Wie heißt der Stoff, der bei der Fotosynthese als Energiespeicher fungiert?');
         Add('Wie lautet die Bruttogleichung der Fotosynthese?');
         Add('In welchen Stoff kann Glucose während der Dunkelreaktion umgewandelt werden?');
         Add('Welchen Nutzen ziehen wir Menschen aus der Fotosynthese?');
         Add('Von welchem Faktor ist die Fotosynthese nicht abhängig?');
         Add('Warum ist die Temperatur ein Faktor der die Fotosynthese beeinflusst?');
         Add('Welche Bedeutung haben Stomata?  (Spaltöffnungen)');
         Add('In welchem Teil der Pflanze findet die Lichtreaktion statt?');
         Add('In wie viele Phase wird die gesamte Fotosynthese unterteilt?');
       end;
end;


Geht natürlich noch nen Stück weiter, aber es ist dasselbe nochmal mit Blut und Genetik.

Liegt alles in einer Case of Anweisung, da man sich die Themen selber aussuchen kann, das mache ich über ne RadioGrouBox, namens: Thema.

Versteht ihr nun?
Trotzdem danke
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mi 28.03.07 19:38 
ausblenden Delphi-Quelltext
1:
add('string255'+'string255'+'string255');					

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mi 28.03.07 19:39 
Sowas geht nicht:
ausblenden Delphi-Quelltext
1:
2:
Const
  sText ='mehr als 255 zeichen'

Aber so etwas
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Var
  sText : String;

Begin
  sText := 'max 255 Zeichen';
  sText := sText + 'noch mehr Zeichen';

Deine Lehrerin hat sich bestimmt gedacht, das man die Datei dan austauschen, einsehen o.ä. kann. Die weiss ja auch nicht, das man EXEn patchen und sonstwas kann.

An Deiner Stelle würde ich:
1. Ein Programm schreiben, das Textdateien verschlüsselt abspeichert.
2. In deinem Programm diese verschlüsselte Datei einlesen und dann normal damit arbeiten.

Erkäre ihr es einfach mit 'Sicherheit': Jeder Depp kann eine EXE mit einem Hex-Editor lesen und mit frei zugängiger Software im Netz patchen. Aber nicht Jeder schafft es, deine EXE zu disassemblieren, um a) die Verschlüsselung und b) das Passwort (Schlüssel) zu knacken.

Lehrer halt :roll:

_________________
Na denn, dann. Bis dann, denn.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 28.03.07 19:43 
Hallo,

und so etwas geht auch:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
       add('Die richtige Antwort war Autotrophe Assimilation. '
          +'Diese beschreibt die Herstellung von energiereichen, einfachen, organischen Stoffen, '
          +'die im weiteren Stoffwechselprozess zu komplexeren Molekülen umgewandelt werden können. '
          +'Dazu benötigen sie Kohlenstoffdioxid, außerdem noch Energie und ein Reduktionsmittel. '
          +'Die Heterotrophe Assimilation beschreibt dagegen den Aufbau körpereigener Stoffe '
          +'aus organischen Stoffen die aus der Umgebung aufgenommen werden. '
          +'Die Dissimilation beschreibt den Abbau körpereigener, organischer und energiereicher '
          +'Stoffe wie z.B. Fette oder Kohlenhydrate zum Freisetzen von Energie in Form '
          +'von Wärme oder ATP.');
       //nächstes add

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Mi 28.03.07 21:00 
user profile iconJakob Schöttl hat folgendes geschrieben:
user profile iconKarlson hat folgendes geschrieben:
Edit: Hab ne Lösung gefunden:

ausblenden Delphi-Quelltext
1:
var s:='Zeichen1-255'+'Zeichen256-510'+...;					


Das ist wohl ein internes Speicherproblem von Delphi. Oder ein Feature ;) Denn so lange Strings wird man ja ohnehin mehrzeilig in den Code eintragen. An den Zeilenanfang ein + zu machen sollte dann kein Problem sein.


Aber in der Praxis entstehen Strings mit mehr als 255 Zeichen doch eh meistens mit einer schleife wie zB.

ausblenden Delphi-Quelltext
1:
for i := 0 to 1000000 do s := s + InttoStr(i);					


Es geht aber nur um das String Literal! Also das Stückchen das zwischen den ' ' steht.
Airwolf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 92



BeitragVerfasst: Mi 28.03.07 21:03 
Hmm, gut ja...

Würde ich ja machen, aber ich hab keinen blassen Schimmer was ich da machen soll :D

Nö, das mit dem Plus scheint ganz gut auszusehen.

Das mit den Textfiles, liegt denke ich daran, dass sie alle Exe Dateien (jeder schreibt nen Prog) auf eine CD packen will, die dann jeder mal kriegen kann.
OKay, ich kanns verstehen, wenn dann sich jeder die exen rüberkopieren will und ein Depp dann mal vergisst die Textfiles mitzunehmen, dann hat er nen Zappen weil das Prog net viel macht. Von daher ist das schon so recht vorteilhaft, aber nun gut.