Entwickler-Ecke

Sonstiges (Delphi) - txt file auslesen, zum verschlüssel von buchstaben


5M17H - Mo 18.09.06 22:10
Titel: txt file auslesen, zum verschlüssel von buchstaben
Hi all.
Ich habe ja die Suche benutzt. Aber nie fündig geworden.

Ganz einfach:
Er soll aus 'code.txt' auslesen. In 'code.txt' sind nur zahlen drinne.
Jede zeile ist eine zahl von 3-5 stellen.
Wenn er zeile eins ausliest und dort steht: 5513 ist 5513 = a.

Momentan sieht das so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
dir := 'C:\code.txt'//dateipfad
AssignFile (f, dir); //datei öffnen, dir = dateipfad
Reset (f); //'f' zurücksetzen
while not EOF(f)do //weil das dokument ncoh nciht zu ende ist tue
  begin
    ReadLn(f, zeile); //zeile auslesen und in 'zeile' speichern
    memo1.text := zeile; //memo1.text soll JEDE zeile anzeigen. <Sicherheitscheck.
  end;


Allerdings klappt da was nicht.
Er zeigt nur die Letzte zeile an.
Er muss alle zeilen speichern, um Sie bei der entschlüsselung nutzen zu können.

Das Dok besteht aus... 59zeilen.
Man gibt einen Text ein, das prog speicehrt udn ersetzt kurz zufor alles mit den codes aus der 'code.txt'.

zeile eins aus 'code.txt' steht für a zeile 2 für b usw.


Christian S. - Mo 18.09.06 22:34

Hallo!

Mit memo1.text := zeile setzt Du immer den kompletten Inhalt des Memos neu. Mit anderen Worten: Du setzt den Inhalt jeweils auf die eine Zeile, die Du gerade ausgelesen hast.

Was Du möchtest, ist, die Zeile hinten dran hängen. Das macht man so:

Delphi-Quelltext
1:
memo1.lines.Add(zeile)                    


Memo.Lines ist eine Stringlist, also eine Liste der Zeilen, die das Memo enthält. Memo.Text ist ein String, der quasi alle Zeilen aneinander gehängt ist. Daher klappt's auch nicht, wenn Du den immer nue setzt ;-)

Grüße
Christian


Martok - Mo 18.09.06 22:34
Titel: Re: txt file auslesen, zum verschlüssel von buchstaben
user profile icon5M17H hat folgendes geschrieben:

Momentan sieht das so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
dir := 'C:\code.txt'//dateipfad
AssignFile (f, dir); //datei öffnen, dir = dateipfad
Reset (f); //'f' zurücksetzen
while not EOF(f)do //weil das dokument ncoh nciht zu ende ist tue
  begin
    ReadLn(f, zeile); //zeile auslesen und in 'zeile' speichern
    memo1.Lines.Add(zeile)//memo1.text soll JEDE zeile anzeigen. <Sicherheitscheck.
  end;


Damit fügst du den Eintrag hinzu, vorher hast du immer den gesamten Text überschrieben.

Edit: Ich war aber erster! :bawling:


5M17H - Mo 18.09.06 22:37

Supi,
aber jetzt muss ich auch auf jede zeile zugreifen


Delphi-Quelltext
1:
memo1.Text :=  StringReplace (memo1.text, '5947 ''a', [rfReplaceAll]);                    


anstatt 5947 muss da dann die erste zeile aus code.txt stehen...


Christian S. - Mo 18.09.06 22:37

Was ich vergessen hab:


Delphi-Quelltext
1:
memo1.lines.loadfromfile(deinDateiname)                    


lädt Dir eine komplette Datei direkt in Dein Memo ;-)


Miri - Mo 18.09.06 22:38

Ganz im Ernst... Grundlagen lernt man zwar auch durch "rumprobieren", aber du solltest dir mal ganz gezielt und in Ruhe - abseits irgendwelcher Projekte, an denen du dich momentan noch leicht zu übernehmen scheinst - den Crashkurs von Christian angucken, oder zum Beispiel die Tuts von dsdt.info, einfach nur, um Grundlagen-Wissen zu erlangen. Und desweiteren, anstatt im 10-Minuten-Takt irgendwelche Threads zu eröffnen, könntest du auch mal in der Delphi-Hilfe nachschauen... Da stehen dann auch sämltiche Eigenschaften eines Memos erklärt, sodass du auf die Problemlösung auch ohne weiteres hättest selber kommen können... Schau dir die Hilfe mal an, da wirst du vieles finden!

So... ich hoffe, das klang nicht zu böse...

Schönen Abend noch,
die Miri


//Edit: Arrgh, da war ich wohl gewaltig zu langsam...


Christian S. - Mo 18.09.06 22:40

Hallo!

zum Zugriff auf einzelne Zeilen:

Wie ich schon schrieb: memo.Lines ist eine Liste von Zeilen. Darauf kannst Du zugreifen wie auf ein Array. Und wie Du darauf zugreifst, findest Du im Crashkurs ;-)

Grüße
Christian


5M17H - Mo 18.09.06 22:41

Ichhabe extra ncoh geschrieben: ich habe geschaut wo ich weis, das da evtl was steht. :wink:

Im crashcours stand nix. Bei den Tuts auchniht. Die Hilfe? Nach dem letzten blcok CNC/CAD wo wir uns die hilfe zu autocad 2005 mechanical angesehen haben, lass ich die finger dafon. :( :(

Auserdem kann ich sowas eh nicht, ich bin ein schlechter sucher.
Tut mir leid :lol:


Christian S. - Mo 18.09.06 22:44

user profile icon5M17H hat folgendes geschrieben:
Die Hilfe? Nach dem letzten blcok CNC/CAD wo wir uns die hilfe zu autocad 2005 mechanical angesehen haben, lass ich die finger dafon. :( :(
Mit Verlaub, das ist eine selten dämliche Ausrede. Was hat die Hilfe von AutoCAD mit der von Delphi zu tun? In Delphi setzt Du den Cursor im Editor auf das Wort "memo1", drückst F1 und bekommst ganz viele Informationen

user profile icon5M17H hat folgendes geschrieben:
Auserdem kann ich sowas eh nicht, ich bin ein schlechter sucher.
Tut mir leid :lol:
Hab ich nicht so den Eindruck. Ich helfe wirklich gerne, aber wenn Du anfängst Arbeit auf uns abzuwälzen, weil Du keine Lust hast die Hilfe zu bemühen, werde ich grantig.


Miri - Mo 18.09.06 22:44

Auch Suchen kann man lernen...
Und das ist in der Delphi-Hilfe sogar gar nicht mal schwer:
Cursor auf Memo1.Text stellen und auf F1 drücken...
Ich denk mal, dass kriegst sogar du hin!! ;)


JayEff - Mo 18.09.06 22:45

Hm ich versteh nich ganz :gruebel: du willst eine Textdatei in ein Memo schreiben oder wie war das gemeint?
Wenns so einfach ist, dann ist die Lösung Memo1.Lines.LoadFromFile(dateiname);. Das lädt dir die Datei ins Memo, wie schon einer mal geschrieben hat. Aber hab dein Problem jetzt nich so ganz verstanden ^^


5M17H - Mo 18.09.06 22:51

Nein,
ich will das momentan zur sicherheit machen.

Später wird das txt nciht angezeigt, sondern verscheidene zeilen eingelesen und bei


Delphi-Quelltext
1:
memo1.Text :=  StringReplace (memo1.text, '5947 ''a', [rfReplaceAll]);                    


eingefügt. Damit der user seinen eigenen verschlüsselungscode hat. momentan klappt alles, aber ich will ja das jeder die code.txt hat, wo er bestimmen kann das a = 5564 ist und nciht vordefiniert a = 5947.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var f : TextFile;
    dir : string;
    i : integer;
    zeile : Array of Integer;
begin
  if OpenDialog1.Execute() then //wenn der dialog zum öfnnen einer datei betätigt ist dann
  begin
    i := 0;
    dir := 'C:\code.txt'//dateipfad
    AssignFile (f, dir); //datei öffnen, dir = dateipfad
    Reset (f); //'f' zurücksetzen
    while not EOF(f)do //weil das dokument ncoh nciht zu ende ist tue
    begin
      ReadLn(f, zeile[i]); //zeile auslesen und in 'zeile' speichern
      i := i + 1;
      memo1.text := zeile[i]; //memo1.text soll JEDE zeile anzeigen. <Sicherheitscheck.
    end;


so siehts aus aber:

"main.pas: inkomplitable typen."

(nutze borland delphi 2005)

i : damit ich später sagen kann zeile[2]; oder zeile[3]; i wird immer eins hochgezählt, weil ich muss ja einmal beim öffnen und einmal bein speichern des doks auf die 'zeile' zugreifen damit ich sagen kann

Delphi-Quelltext
1:
memo1.Text :=  StringReplace (memo1.text, zeile[1], 'a', [rfReplaceAll]);                    


Christian S. - Mo 18.09.06 23:00

Schau Dir mal in entsprechenden Quellen den Unterschied zwischen String und Integer an. Außerdem schau Dir mal an, wie man bei dynamischen Arrays die Länge festlegt, damit man sie verwenden kann. Und dann schau Dir nochmal Deinen Code an.

Und wieso steht in Deinem Quelltext immer noch memo1.text := ... nachdem Dir dreimal gesagt wurde, dass da ein Fehler liegt?


JayEff - Mo 18.09.06 23:01

OK Warte - du hast code.txt, im stil

Quelltext
1:
2:
3:
4:
5:
57334
6135
562345
234246
1123 etc...

und nun steht 57334 für a und 6135 für b und so weiter. richtig? Nun willst du von a bis z in einem Text alle zahlen mit buchstaben, bzw buchstaben mit zahlen ersetzen?
Wie auch immer. Dein Code KANN nicht funkionieren. zeile[1] ist ja ein Integerwert, kein String! Und per ReadLn bekommst du nur Strings, genauso wie auch das Memo nur Strings aufnehmen kann! Ausserdem haben dir schon andere die Lösung gezeigt. Dein Code ÜBERSCHREIBT bei jedem Schleifendurchlauf den Inhalt des Memos. Klar, dass nicht alles angezeigt wird! Richtig wäre:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
{...}
var zeile: String;
begin
{...}
    while not EOF(f)do //weil das dokument ncoh nciht zu ende ist tue 
    begin 
        ReadLn(f, zeile); //zeile auslesen und in 'zeile' speichern 
        memo1.lines.add(zeile); //memo1.text soll JEDE zeile anzeigen. <Sicherheitscheck. 
    end;

Falls du aber den Array zeile dringend brauchst, musst du seine Länge definieren.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
{...}
var zeile: array of String;
begin
{...}
    i:=0;
    while not EOF(f)do //weil das dokument ncoh nciht zu ende ist tue 
    begin
        inc(i); //inc steht für increase: bedeutet das gleiche wie i:=i+1 nur kürzer.
        SetLength(zeile, i); //größe des Arrays anpassen
        ReadLn(f, zeile[i]); //zeile auslesen und in 'zeile' speichern 
        memo1.lines.add(zeile[i]); //memo1.text soll JEDE zeile anzeigen. <Sicherheitscheck. 
    end;


5M17H - Mo 18.09.06 23:09


Quelltext
1:
access violation at 0x00401c4c.... ect                    



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var f : TextFile;
    dir : string;
    i : integer;
    zeile : Array of string;
begin
  if OpenDialog1.Execute() then //wenn der dialog zum öfnnen einer datei betätigt ist dann
  begin
    i := 0;
    dir := 'C:\code.txt'//dateipfad
    AssignFile (f, dir); //datei öffnen, dir = dateipfad
    Reset (f); //'f' zurücksetzen
    while not EOF(f)do //weil das dokument ncoh nciht zu ende ist tue
    begin
      inc(i); //increas (i := i + 1;)
      SetLength(zeile, i); //größe des arrays anpassen
      ReadLn(f, zeile[i]); //zeile auslesen und in 'zeile' speichern
      memo1.lines.add(zeile[i]); //memo1.text soll JEDE zeile anzeigen. <Sicherheitscheck.
    end;


Wo ist da der fehler?

[edit]
christian S ich habe den code nciht verändert, wollte nur mal dieses array veruschen zu definieren... habs jetzt geändert, und geht ncoh nciht. :(


Christian S. - Mo 18.09.06 23:12

Wenn Du die Länge eines dynamischen Arrays auf 1 setzt, ist der höchste Index, auf den Du zugreifen kannst 0. Das sollte Dir sagen, wo der Fehler ist ;-)


JayEff - Mo 18.09.06 23:15

:oops: mein fehler. Aber das hättest du auch selbst rausgefunden, wenn du das Tut oder den Crashkurs zu Arrays gelesen hättest ;> Wie man das Problem behebt, findest du sicher selbst raus, wenn du dir TUFKAPLS Post nochmal genauer durchließt ^^


5M17H - Mo 18.09.06 23:22

Ich danke allen.


Delphi-Quelltext
1:
memo1.Text :=  StringReplace (memo1.text, zeile[3], 'a', [rfReplaceAll]);                    


Er schreibt trotzdem 'h1264' anstatt 'ha'.

Ich habe mir gedacht: Wenn i ;= 250 ist kann er mehr als 4*60 speichern. soviel bruach ich nciht.

jetzt will ich also '1264', dank 'code.txt' wo in der ersten zeile 1264 steht, durch a ersetzen. Er zeigt mir trotzdem 1264. Warum?


Christian S. - Mo 18.09.06 23:30

user profile icon5M17H hat folgendes geschrieben:
Ich danke allen.


Delphi-Quelltext
1:
memo1.Text :=  StringReplace (memo1.text, zeile[3], 'a', [rfReplaceAll]);                    


Er schreibt trotzdem 'h1264' anstatt 'ha'.

Ich habe mir gedacht: Wenn i ;= 250 ist kann er mehr als 4*60 speichern. soviel bruach ich nciht.

jetzt will ich also '1264', dank 'code.txt' wo in der ersten zeile 1264 steht, durch a ersetzen. Er zeigt mir trotzdem 1264. Warum?

Hab mal zwei Sachen in dem Zitat markiert. Könnte es daran liegen oder hast Du Dich nur beim Schreiben des Postings vertan?


5M17H - Mo 18.09.06 23:31

Nein.
Ich gebe zeile1 ein und es passier trotzdem nix.
Desswegen ja.


JayEff - Di 19.09.06 01:13

Überprüfe vielleicht nochmal genau, ob sich in die code.txt eine leertaste oder ähnliches eingeschlichen haben könnte... falls nicht, solltest du uns vielleicht mal deine code.txt und den verschlüsselten Text geben, um zu sehen, ob es daran liegen könnte...


Miri - Di 19.09.06 06:26

wie genau zählst du denn jetzt?!

wie christian schon sagte, fangen arrays bei 0 an, nicht bei 1. hast du jetzt trotzdem bei 1 angefangen, ins array zu schreiben, oder bei 0??


5M17H - Di 19.09.06 08:47

Mementan sieht die Code.txt so aus

Quelltext
1:
2:
3:
1246
5432
5456


Und mein Delphicode so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var f : TextFile;
    dir : string;
    i : integer;
    zeile : Array of string;
begin
  if OpenDialog1.Execute() then //wenn der dialog zum öfnnen einer datei betätigt ist dann
  begin
    i := 250;
    dir := 'C:\code.txt'//dateipfad
    AssignFile (f, dir); //datei öffnen, dir = dateipfad
    Reset (f); //'f' zurücksetzen
    while not EOF(f)do //weil das dokument ncoh nciht zu ende ist tue
    begin
      inc(i); //increas (i := i + 1;)
      SetLength(zeile, i); //größe des arrays anpassen
      ReadLn(f, zeile[i]); //zeile auslesen und in 'zeile' speichern
      //memo1.lines.add(zeile[i]); //memo1.text soll JEDE zeile anzeigen. <Sicherheitscheck.
    end;
    memo1.lines.LoadFromFile(OpenDialog1.FileName); //zeige die Datei in Memo1 an.
    memo1.Text :=  StringReplace (memo1.text, zeile[1], 'a', [rfReplaceAll]);


Die letzte zeile soll er eben dann schon auslesen, also soll er '1264' durch 'a' ersetzen.
Es hat auch schon geklappt, befor ich die code.txt hatte, wenn ich da anstatt 'zeile[1]' '1264' hinschreiben würde, würde er auch ein 'a' draus machen aber so...


Miri - Di 19.09.06 08:54

denk doch mal in aller ruhe durch, was du machst...

du setzt i auf 250
dann zählst du i hoch (251)
setzt die länge von deinem array auf i also auf 251
und schreibst an stelle i vom array deine erste code-zeile rein...
na, wo könnte jetzt dein erster wert aus der textdatei stehen?! wohl kaum in zeile[1]

ich sags noch ein letztes mal:
du übernimmst dich mit deinen vorhaben...
fang von vorne an, wenn du delphi wirklich lernen willst...


5M17H - Di 19.09.06 09:06

Naja pass auf:
Ich habe ja 'i := 1' gehabt. Und 'i := 0' auch.

Beides hatte einen fehler. Ich musste allso i sohoch setzen, dass alle zeichen aus der 'code.txt' reinpassen. Also leicht gerechnet: 4*60 = 240 und dann einfach noch 10 rauf, weil evtl manche auch 5 stellig sind und manche 4stellig.

Naja nicht gut und unschön,
ich habe jedenfalls kurzerhand, deine devise versucht.
Anstatt zeile[1] habe ich einmal zeile[250] und einmal zeile[251] hingeschrieben.
Geht immernoch nicht.

PS: Wenn ich wüsste wo der fehler ist, hätt ich das Programm schon fertig, wollte das mit der code.txt eben ncoh dazuhaben. Ohne die lief es schon. Ich habe bei delphi mit null angefangen, ein Taschenrechner, danach ein Binär - Dezimalrechner, danach ein Notenrechner (15pkt gibt man ein er sagt: 1+; habe case verwendet). Einen normalen Editor, wo nur Drucken fehlt, Kopieren, Ausschneiden, einfügen, speichern, laden und beenden gabs schon.
Ein prog was die zahl -die man eingibt ab 10000 > 99999- rausfindet und die versuchsdurchläufe anzeigt. Ich weis nicht was ich noch machen sollte. Empfiel mir was.

Das ding ist: Ich habe den delphi-code so geschrieben wie ihr es empfohlen habt. Und es ist trotzdem nen fehler drin. Sowas kann nur mir passieren :wink:


Miri - Di 19.09.06 09:13

versuch das mal, habs nicht ausprobiert...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
  
begin  
    SetLength(zeile, 250); // setz es am anfang auf deine größe, wenn du's fest auf 250 haben willst!
    i := 0;  //fang bei null an zu zählen
    dir := 'C:\code.txt'
    AssignFile (f, dir); 
    Reset (f); 
    while not EOF(f)do 
        begin  
            ReadLn(f, zeile[i]); 
            inc(i); //erst einlesen, dann i hochzählen!!
        end;  
    memo1.lines.LoadFromFile(OpenDialog1.FileName); //zeige die Datei in Memo1 an.  
    memo1.Text :=  StringReplace (memo1.text, zeile[0], 'a', [rfReplaceAll]);
end;


//Edit vielleicht hast du dich schon an mehreren Sachen probiert, aber wie ich schon mal sagte, man kann nicht nur durch try-error-"frag im delphiforum" lernen...
ist halt so...
und wir haben dir jetzt schon oft genug den tip gegeben, anstatt dich wieder an nem projekt zu übernehmen, erstmal OHNE PROJEKT grundlagenwissen zu erlangen...
:motz: bald geb ichs auf...


5M17H - Di 19.09.06 09:27

So ihr seid nun befreit.

Du hattest einen fehler xD. nicht zeile[0] sondern zeile[1].


DANKESCHÖN.


@Miri
Ich habe immernoch nicht verstanden was du mit
Miri hat folgendes geschrieben:
erstmal OHNE PROJEKT grundlagenwissen zu erlangen

meinst. Würde den ratschlag gerne befolgen aber verstehe das nich:
Wie soll ich ohne ziel ein programm schrieben,
ich denke nämlcih -was auch falsch sien kann, wenn es flasch ist bitte korrigieren- man lernt viel wenn man
1. Ein prog schreibt, und es dann, wenn man es fertig hat, ncoh ne stufe schwerer macht.
2. Eine gute Hilfe hat,
3. einige Tutorials.

Oder liege ich da falsch?


Miri - Di 19.09.06 09:36

user profile icon5M17H hat folgendes geschrieben:

@Miri
Ich habe immernoch nicht verstanden was du mit
Miri hat folgendes geschrieben:
erstmal OHNE PROJEKT grundlagenwissen zu erlangen

meinst. Würde den ratschlag gerne befolgen aber verstehe das nich:
Wie soll ich ohne ziel ein programm schrieben,
ich denke nämlcih -was auch falsch sien kann, wenn es flasch ist bitte korrigieren- man lernt viel wenn man
1. Ein prog schreibt, und es dann, wenn man es fertig hat, ncoh ne stufe schwerer macht.
2. Eine gute Hilfe hat,
3. einige Tutorials.

Oder liege ich da falsch?


Nein, falsch liegst du da nicht...
aber was allein in diesem Thread hier aufgefallen ist, ist dass du dich noch nie mit Datentypen beschäftigt hast (es wirkte zeitweilig so, als wäre dir nicht einmal der Unterschied zwischen String und Integer bekannt).
Was ich meine ist, dass du dich erst einmal mit den Möglichkeiten vertraut machen sollst. Und die lernst du eben, wenn du mal einfach nur Tutorials durcharbeitest, und nicht bei einem konkreten Problem ein konkretes Tutorial mit Lösung zu suchen.
Sicher lernt man auch beim Programmieren selbst, aber eben nicht das Basiswissen, was man schon mal haben sollte, BEVOR man anfängt...
Die gute Hilfe hast du hier mit Sicherheit, aber du solltest auch lernen, sie richtig zu (be)nutzen... zu vielen Problemen findest du hier fertige Lösungen, du solltest dich aber auch daran gewöhnen, wenn es keine fertige Lösung gibt, nach Ansätzen zu suchen, und selbst weiterzukommen... genau diese Einstellung vermisse ich bei dir ein wenig...
Wenn du ein Tut oder einen Thread oder ein Stück im Crashkurs oder was auch immer gefunden hast, und das nicht 100%ig zu deinem gewünschten Ergebnis führst, machst du dir scheinbar nicht die Mühe, selbst weiterzukommen, sondern fragst gleich nach...

Denk mal drüber nach...


5M17H - Di 19.09.06 10:11

Datentypen die wir (bis jetzt) in der schule gelernt haben

ineger : Ganze zahlen
double : reele zahlen
string : zeichenkette (z.b. zum speichern von sätzen)
boolean : gibt true oder false zurück, kenne dafür keinen ausdruck.


Nur eben: In der Schule, bei 4h die Woche geht mir das zu langweilig.

Es tut mir leid das das so rübergekommen ist, als ob ich in den Tuts eine 100%ige lösung finde. So ist das nicht. Ich habe da nur nichts gefunden was mir geholfen hat.

Ich werde mich dran halten erst, bei einem problem, den ganzen abschnitt im Crashcours zu lesen. Werde dann bei jedem post den ich machen werde, noch dazu schreiben was ich da gelesen habe und warum mich das nciht weiterbringt xD.

Jetzt läuft das Programm, dank euerer Hilfe.

Ich bedanke mich gnaz Herzlich.


JayEff - Di 19.09.06 14:52

user profile iconJayEff hat folgendes geschrieben:
:oops: mein fehler. Aber das hättest du auch selbst rausgefunden, wenn du das Tut oder den Crashkurs zu Arrays gelesen hättest ;> Wie man das Problem behebt, findest du sicher selbst raus, wenn du dir TUFKAPLS Post nochmal genauer durchließt ^^

Um darauf nochmal zurück zu kommen. Das hast du nicht gelesen. Ganz sicher, da du TROTZDEM noch meinen Code unverändert übernommen hast. Ich zeig dir, was du an meinem Code hättest ändern müssen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
{...} 
    i:=0
    while not EOF(f)do //weil das dokument ncoh nciht zu ende ist tue  
    begin 
        inc(i); //inc steht für increase: bedeutet das gleiche wie i:=i+1 nur kürzer. 
        SetLength(zeile, i); //größe des Arrays anpassen 
        ReadLn(f, zeile[i-1]); //zeile auslesen und in 'zeile' speichern  
        memo1.lines.add(zeile[i]); //memo1.text soll JEDE zeile anzeigen. <Sicherheitscheck.  
    end;

Schon wäre dein Problem gelöst gewesen, was die Sache mit dem Array betrifft, aber gut.


5M17H - So 24.09.06 16:14

So, nun hat es ja ne weile geklappt aber jetzt kommts:
seid neustem, also seid 2 tagen, geht es nicht mehr.

Ich sage:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin
  AssignFile(f,'C:\code.txt');
  Rewrite(f);
  for i := 1 to 68 do
  begin
    a := 10000 + Random(89999);
    Writeln(f,a);
  end;
end;


Und ich sage euch was:
Anstatt 68 zeilen macht er nur 55!
Und ausserdem sieht code.txt immer gleich aus. Warum?


azubi_20 - So 24.09.06 17:07

du hast den Zufallsgenerator aber mit randomize; initialisiert oder ?


5M17H - So 24.09.06 18:10

jetzt ja und jetzt gehts... danke