AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie Dateizeiger auf bestimmte Position in Textdatei setzen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Dateizeiger auf bestimmte Position in Textdatei setzen?

Ein Thema von mo_greene · begonnen am 1. Apr 2007 · letzter Beitrag vom 3. Apr 2007
Antwort Antwort
Seite 2 von 2     12   
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 11:58
Okay super , viele Dank!

In meinen weiteren Überlegungen stellte sich mir dann folgende Frage:

Wie kann ich erreichen, dass in einer beliebigen Komponente (z.B. ein Edit-Feld) das Wort/der Text aus einer zufälligen Zeile angezeigt wird?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 12:14
Delphi-Referenz durchsuchenRandom für den "Zufall"

und dann einfach die Zeile auslesen und dort eintragen


also z.B.
Delphi-Quellcode:
AssignFile(F, 'MeineDatei.txt');
Reset(F);
For i := 0 to Random(10) do
  ReadLn(F, S);
Close(F);
Edit1.Text := S;
> Random(10) für 1. bis 10. Zeile

Du kannst aber auch die Datei in ein TStringList einlesen (LoadFromFile) und dann die gewünschte Zeile dort auswählen,

oder ...
$2B or not $2B
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 12:18
Ahhh super ...hätte ich auch eigentlich selber drauf kommen müssen
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 21:22
Habe noch eine Frage:

wie schaffe ich es das Random nur gerade Zahlen liefert?
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#15

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 21:32
Zitat von mo_greene:
wie schaffe ich es das Random nur gerade Zahlen liefert?
Kannst ja dein Ergebnis mit 2 multiplizieren. Wenn Du also nur die Zahlen 0, 2, 4, 6, 8, 10 erhalten willst, so kannst du

random(6) * 2

aufrufen. Random(6) liefert dir ja Zahlen zwischen 0 und 5.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 21:33
Als Grenze die Hälfte und dann das Ergebnis mal 2
Markus Kinzler
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 22:57
Habe bei meinem Programm jetzt folgendes Problem...wenn am Ende die beiden Strings verglichen werden und sie übereinstimmen wird trotzdem "Falsch!" angezeigt!

Suche schon länger nach dem Fehler aber finde ihn nicht

Findet ihn hier jemand?

Delphi-Quellcode:
var
  Form1: TForm1;
  Zahl : Integer;
  Richtig: Boolean;
  S : String;
  Ergebnis : String;

implementation

{$R *.dfm}
{******************************************************************************}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Zahl := Random (4); {Range muss die Hälfte der Vokabeln sein}
  Maskeaktualisieren;
end;
{******************************************************************************}
procedure TForm1.Maskeaktualisieren;
var
  F : Textfile;
  i : Integer;
begin
//Vokabel wird geladen!*********************************************************
  if OpnDlgVokabelliste.Execute = true then
    begin
      AssignFile(F, OpnDlgVokabelliste.FileName);
      {$I-}
      Reset(F);
      {$I+}
      if IOResult = 0 then
        begin
          For i := 0 to (Zahl*2) do
            begin
              ReadLn(F, S);
            end;
          CloseFile(F);
          EdtAusgabe.Text := S;
        end
          else
            EdtAusgabe.Text := 'Fehler';
      end;
end;
{******************************************************************************}
procedure TForm1.BtnEndeClick(Sender: TObject);
begin
  Close;
end;
{******************************************************************************}
procedure TForm1.BtnUeberpruefenClick(Sender: TObject);
var
  F : Textfile;
  I : Integer;
begin
//Ergebnis Vokabel wird geladen*************************************************
  if OpnDlgVokabelliste.Execute = true then
    begin
      AssignFile(F, OpnDlgVokabelliste.FileName);
      {$I-}
      Reset(F);
      {$I+}
      if IOResult = 0 then
        begin
          For i := 0 to ((Zahl*2)+1) do
            begin
              ReadLn(F, Ergebnis);
            end;
          CloseFile(F);
        end;
    if SameText(S,Ergebnis) then {Strings werden verglichen}
    begin
      Richtig := true;
    end
      else
        Richtig := false;
    end;
//Ergebnis Vokabel-Ladevorgang abgeschlossen************************************
  if Richtig = true then
    begin
      EdtErgebnis.Visible := true;
      EdtErgebnis.Text := 'Richtig!';
    end;
  if Richtig = false then
    begin
      EdtErgebnis.Visible := true;
      EdtErgebnis.Text := 'Falsch!';
    end;
  // es wird immer "Falsch" angezeigt!!
end;
end.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#18

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 23:20
wie ist denn deine vergleichsroutine definiert???
Delphi-Quellcode:
    if SameText(S,Ergebnis) then {Strings werden verglichen}
    begin
      Richtig := true;
    end
      else
        Richtig := false;
    end;
könnt doch genauso gut so heissen, oder?
Delphi-Quellcode:
    if S = Ergebnis) then {Strings werden verglichen}
    begin
      Richtig := true;
    end
      else
        Richtig := false;
    end;
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 2. Apr 2007, 23:25
wie meinst du das? bei mir tritt mit beiden variationen der gleiche fehler auf, d.h. es wird immer "Falsch" angezeigt!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#20

Re: Wie Dateizeiger auf bestimmte Position in Textdatei setz

  Alt 3. Apr 2007, 00:11
@grenzgaenger: SameText prüft unabhängig von der Groß-/Kleinschreibung.

@mo_greene: prüfungen mit =true und =false solltest du dir besser abgewöhnen ...
dieses könnte zu problemem führen
's gibt da schon einige nette themen hier im Forum dazu.

Delphi-Quellcode:
if SameText(S, Ergebnis) then
  begin
    Richtig := true;
  end
    else
      Richtig := false;
Richtig := SameText(S, Ergebnis);
Delphi-Quellcode:
if Richtig = true then
if Richtig = false then
Delphi-Quellcode:
if Richtig then
if not Richtig then
...

PS: hast du mal 'nen breakpoint auf if Richtig = true then gesetzt und nachgesehn welchen Wert Richtig hat?


Delphi-Quellcode:
var
  Form1: TForm1;
  Zahl : Integer;
  Richtig: Boolean;
  S : String;
  Ergebnis : String;

implementation

{$R *.dfm}
{******************************************************************************}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Zahl := Random (4); {Range muss die Hälfte der Vokabeln sein}
  Maskeaktualisieren;
end;
{******************************************************************************}
procedure TForm1.Maskeaktualisieren;
var
  F : Textfile;
  i : Integer;
begin
//Vokabel wird geladen!*********************************************************
  if OpnDlgVokabelliste.Execute then
    begin
      AssignFile(F, OpnDlgVokabelliste.FileName);
      {$I-}
      Reset(F);
      {$I+}
      if IOResult = 0 then
        begin
          For i := 0 to Zahl * 2 do
            ReadLn(F, S);
          CloseFile(F);
          EdtAusgabe.Text := S;
        end
          else
            EdtAusgabe.Text := 'Fehler';
    end;
end;
{******************************************************************************}
procedure TForm1.BtnEndeClick(Sender: TObject);
begin
  Close;
end;
{******************************************************************************}
procedure TForm1.BtnUeberpruefenClick(Sender: TObject);
var
  F : Textfile;
  I : Integer;
begin
//Ergebnis Vokabel wird geladen*************************************************
  if OpnDlgVokabelliste.Execute then
    begin
      AssignFile(F, OpnDlgVokabelliste.FileName);
      {$I-}
      Reset(F);
      {$I+}
      if IOResult = 0 then
        begin
          For i := 0 to Zahl * 2 + 1 do
            ReadLn(F, Ergebnis);
          CloseFile(F);
        end;
//Ergebnis Vokabel-Ladevorgang abgeschlossen************************************
  //if SameText(Trim(S), Trim(Ergebnis)) then {Strings werden verglichen}
  Richtig := SameText(Trim(S), Trim(Ergebnis)); {Strings werden verglichen}
  if Richtig then
    EdtErgebnis.Text := 'Richtig!'
  else
    EdtErgebnis.Text := 'Falsch!';
  EdtErgebnis.Visible := true;
end;
end.
hab mal einiges überarbeitet ... vorallem SameText(Trim(S), Trim(Ergebnis)) ... Trim bewirkt daß z.B. Leerzeichen keinen Einfluß auf das Ergebnis haben.

Richtig := SameText(Trim(S), Trim(Ergebnis)); hier mal prüfen was in S und Ergebnis drin steht und danach eventuell nochmal nach Richtig sehn.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz