Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Zeilenumbruch in einer .txt Datei ( Delphi ) » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
eulerscheZahl

Freut mich. Ich hatte schon Angst, dass du das überliest, bei dem vielen Text smile
Und ja, ich wollte auch boolean hinaus.
Andro

Achso vielen vielen Dank Gott es lag tatsächlich daran, dass ich die Liste wieder freigegeben habe. Jetzt funktioniert es ganz normal. Stimmt ich hatte nicht daran gedacht dass kappa negativ negativ oder gleich 0 wird Forum Kloppe . Das Label hätte ich am Ende noch invisible gemacht aber ich habe gerade von Boolean gelesen. Ich glaube damit sollte es einfach zu machen sein smile
eulerscheZahl

Das mit dem Zeilenumbruch kann ich einfach nicht reproduzieren. Bei mir funktioniert es.
Allerdings stürzt dein Programm bei mir ab, wenn ich es so lasse:
code:
1:
2:
3:
4:
list := TStringList.Create;
list.LoadFromFile('Logs.txt');
list.Free;
list.LoadFromFile('Logs.txt');

Mit Free gibst du den Speicher frei. Danach darfst du die Liste nicht mehr verwenden.
Also entweder nicht freigeben (warum machst du das überhaupt, wenn du die Liste noch verwenden willst?) oder mit list := TStringList.Create; eine neue erstellen.
Könnte sein, dass dein Speicher korrumpiert ist und du deshalb keine Zeilenumbrüche mehr kriegst.

Zitat:
Jede Zeile von Benutzernamen wird in der .txt Datei kontrolliert und falls es eine Zeile gibt, in der der gewünschte Benutzername bereits existiert wird der Text ('Benutzername bereits vergeben') ausgegeben andernfalls ist der Benutzername verfügbar und die Anmeldung kann erfolgen

Das ist was du willst. Dein Programm macht etwas anderes.
code:
1:
2:
3:
4:
5:
6:
7:
kappa := list.Count div 2;
  for zeilennr := 0 to kappa-1 do
    begin
      if list[zeilennr*2] = 'Benutzer: '+ nbn then showmessage ('Benutzername bereits vergeben')
      else
        Label4.Caption := 'Benutzername verfügbar';
    end;

Szenario 1: die Liste ist leer. Dann ist kappa=0. Die Schleife läuft von 0 bis -1 (also gar nicht, bis hierhin nicht verkehrt: wo nichts ist, kann nichts getestet werden).
Aber dadruch wird Label4.Caption := 'Benutzername verfügbar'; nie ausgeführt. Das ist aber die Bedingung, um einen neuen Nutzer anzulegen.
if Label4.Caption = 'Benutzername verfügbar' ist false, also kein neuer Nutzer, kein Schreiben in die Datei.

Szenario 2: die Liste hat 2 Nutzer: nutzer1 und nutzer2. nbn ist nutzer1 (der ja schon existiert).
Die Schleife wird zweimal ausgeführt. Beim ersten Mal kommt eine Fehlermeldung (Benutzername bereits vergeben). Beim zweiten Durchlauf ist der Benutzername ein anderer, also wird der else-Pfad ausgeführt. Es wird signalisiert, dass der Name verfügbar ist und ein zweiter nutzer1 wird angehängt.


Wie du beides beheben könntest:
code:
1:
2:
3:
4:
5:
Label4.Caption := 'Benutzername verfügbar';
for zeilennr := 0 to kappa-1 do begin
  if list[zeilennr*2] = 'Benutzer: '+ nbn then
    Label4.Caption := 'Benutzername vergeben';
end

Für so etwas nimmt man aber eigentlich Variablen, keine Label (da muss jedes Mal die Nutzeroberfläche aktualisiert werden. Bei vielen Nutzern wird das schnell sehr langsam.
Andro

"der Nutzername ist verfügbar, wenn es einen Nutzer gibt, der anders heißt. Bei einer leeren Liste kann man sich folglich nicht registrieren."

Nicht ganz nbn ist der von dem Benutzer gewünschte Nutzername.
Jede Zeile von Benutzernamen wird in der .txt Datei kontrolliert und falls es eine Zeile gibt, in der der gewünschte Benutzername bereits existiert wird der Text ('Benutzername bereits vergeben') ausgegeben andernfalls ist der Benutzername verfügbar und die Anmeldung kann erfolgen
Damit aber nur die Zeile der Benutzernamen kontrolliert wird muss zwischen Benutzerzeile und Passwortzeile ein Zeilenumbruch in der .txt Datei erfolgen
Andro

Also warum bei der .txt Datei kein Zeilensprung erfolgt verstehst du auch nicht ganz?
Andro

Also nach der Registrierung kommt man ja zur Anmeldung und diese gibt einem dann die Ausgabe ob die Anmeldung erfolgreich war oder nicht weiter geht es dann auch nicht.
Ich habe mit Delphi erst am Mittwoch angefangen und bin noch ein anfänger deswegen sieht der code wahrscheinlich nicht so gut aus :/
Das Programm ist ja auch noch nicht fertig ich arbeite mich von Problem zu Problem momentan verstehe ich nicht, warum kein Zeilenumbruch erfolgt Zunge raus
eulerscheZahl

Mein Problem ist, wie ich in den Pfad überhaupt reinkomme.
Das ist ja beim Abschließen des Registrierungsprozesses.

code:
1:
2:
3:
4:
5:
6:
7:
8:
  kappa := list.Count div 2;
//...
          for zeilennr := 0 to kappa-1 do
            begin
              if list[zeilennr*2] = 'Benutzer: '+ nbn then showmessage ('Benutzername bereits vergeben')
              else
                Label4.Caption := 'Benutzername verfügbar';

der Nutzername ist verfügbar, wenn es einen Nutzer gibt, der anders heißt. Bei einer leeren Liste kann man sich folglich nicht registrieren. Bei zwei verschiedenen Nutzern kann man den verwendeten trotz Meldung nehmen.
Wenn ich also per Texteditor einen Nutzer ergänze, stürzt das Programm beim Versuch des erneuten Ladens ab. (if Label4.Caption = 'Benutzername verfügbar' then [...] list.LoadFromFile('Logs.txt'); )
Wenn ich das Abstürzen durch eine Neuinitialisierung (list := TStringList.CreateAugenzwinkern unterbinde, klappt das Anmelden.

So oder so hätte ich noch einiges an deinem Code auszusetzen böse
Andro

Ich hatte das falsche Projekt hochgeladen hab es geändert jetzt sollte es richtig sein
eulerscheZahl

Nein, hast du nicht. Hast du auf "speichern" geklickt?
Andro

Ja genau deswegen konnte ich es mir auch nicht erklären :/
Danke für die Antwort hab die Datei im Anhang hochgeladen
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.