AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bestimmte Stellen aus String List lesen
Thema durchsuchen
Ansicht
Themen-Optionen

Bestimmte Stellen aus String List lesen

Ein Thema von PhöniX · begonnen am 31. Jan 2004 · letzter Beitrag vom 1. Feb 2004
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
PhöniX

Registriert seit: 24. Jan 2004
Ort: Marienfeld
149 Beiträge
 
Delphi 5 Professional
 
#1

Bestimmte Stellen aus String List lesen

  Alt 31. Jan 2004, 21:57
Hi,
ich weiß nicht ob das hierher passt, aber egal..

Ich hab ne .ini datei gemacht und will aus ihr bestimmte stellen auslesen. das sieht so aus:
Code:
ja
yes

nein
no

gut
good
wie krieg ich jetzt hin, dass einer der ersten wörter (ja,nein,gut) ausgelesen wird und dann der dazugehörige zweite..??
wobei der erste immer zufällig sein soll...
cya PhöniX
besucht www.lycoweb.de
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#2

Re: Bestimmte Stellen aus String List lesen

  Alt 31. Jan 2004, 22:26
wenn du dich an die Formatierung hältst kannst du das so machen

Delphi-Quellcode:
type TEintrag = record // der typ besteht aus 2 strings
  englisch,
  deutsch: string[255];
end;

var
  F: Textfile;
  a: string[255];
  liste: Array of TEintrag;

procedure readinifile(dateiname: string);
begin
  assignfile(F, dateiname); // Datei zuweisen
  reset(F); // und mit Lesezugriff öffnen
  while not EOF(F) do // solange die Leseposition nicht am Ende der Datei angekommen ist lesen
  begin
    readln(F,a); // leerzeile lesen
    setlength(liste, length(liste) +1 ); // neues Element an die Liste anfügen
    readln(F,a); // wieder eine Zeile lesen, den deutschen Teil
    liste[high(liste)].deutsch := a;// und das Wort in die Array "liste" rein
    readln(F,a); // wieder eine Zeile lesen, den englischen Teil
    liste[high(liste)].englisch := a;// und diesen entsprechend in die andere Variable des Records aus dem letzten Element speichern
  end;
  closefile(F); // zum Schluss die Datei schliessen
                                    // jetzt befinden sich in der Array soviele Datensätze wie Wortpaare, jeweils deutsch und englisch
end;

function getrandomitem: TEintrag;
begin
  if length(liste) <>0 then // wenn die Liste nicht leer ist
  Result := liste[round(high(liste)* random)]; // irgendeinen Datensatz auswählen
end;


// Beispiel
procedure TForm1.FormCreate(Sender: TObject);
begin
  readinifile('datei.ini'); // initialisieren
end;


procedure TForm11.Button1Click(Sender: TObject);
var
  puffer: TEintrag;
begin
  puffer :=getrandomitem; // und so kommt man dann an die Datensätze ran
  Label1.Caption := puffer.deutsch;
  label2.Caption := puffer.englisch;
end;
Edit: Kommentare
Edit: dateiname durch variable ersetzt
  Mit Zitat antworten Zitat
PhöniX

Registriert seit: 24. Jan 2004
Ort: Marienfeld
149 Beiträge
 
Delphi 5 Professional
 
#3

Re: Bestimmte Stellen aus String List lesen

  Alt 31. Jan 2004, 22:41
was brauch ich denn davon und was nicht??

ich will sowas machen:
Delphi-Quellcode:
label1.caption := //eine zufällige erste zeile der string list;
...
if edit1.text = //die dazugehörige untere zeile
then
...
kannst du mir mal den code posten und an die stelle der kommentare das einfügen, was da hin gehört??
und das übrige auch aber an die stellen, an die du z.b. datei.ini schreibst, schreib einfach nen kommentar was da hingehört...das wär dann
cya PhöniX
besucht www.lycoweb.de
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#4

Re: Bestimmte Stellen aus String List lesen

  Alt 31. Jan 2004, 23:00
hoff es is jetzt klarer
  Mit Zitat antworten Zitat
31. Jan 2004, 23:11
Dieses Thema wurde von "sakura" von "Datenbanken" nach "Sonstige Fragen zu Delphi" verschoben.
PhöniX

Registriert seit: 24. Jan 2004
Ort: Marienfeld
149 Beiträge
 
Delphi 5 Professional
 
#6

Re: Bestimmte Stellen aus String List lesen

  Alt 31. Jan 2004, 23:36
ja...habs mal ausprobiert..
aber ich krieg noch nen exeption fehler:
Delphi-Quellcode:
procedure readinifile(dateiname: string);
begin
  assignfile(F, 'd-e.ini');
  reset(F);
  while not EOF(F) do
  begin
    readln(a);//<--------------Hier liegt der Fehler
    setlength(liste, length(liste) +1 );
    readln(a);
    liste[high(liste)].deutsch := a;
    readln(a);
    liste[high(liste)].englisch := a;
  end;
  closefile(F);

end;
[edit] Fehler: EInOutError [/edit]
cya PhöniX
besucht www.lycoweb.de
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#7

Re: Bestimmte Stellen aus String List lesen

  Alt 31. Jan 2004, 23:56
Delphi-Quellcode:
procedure readinifile(dateiname: string);
begin
  assignfile(F, dateiname);
  reset(F);
  while not EOF(F) do
  begin
  try
    setlength(liste, length(liste) +1 );
    readln(F,a);
    readln(F,a);
    liste[high(liste)].deutsch := a;
    readln(F,a);
    liste[high(liste)].englisch := a;
  except
    setlength(liste, length(liste) -1 );
  end;
  end;
  closefile(F);

end;
[edit=thomasdrewermann]Delphi-Tags ergänzt Mfg, thomasdrewermann[/edit]
  Mit Zitat antworten Zitat
PhöniX

Registriert seit: 24. Jan 2004
Ort: Marienfeld
149 Beiträge
 
Delphi 5 Professional
 
#8

Re: Bestimmte Stellen aus String List lesen

  Alt 1. Feb 2004, 00:01
wenn ich mit exceptions mache, immer noch der gleicher fehler..
wenn ich ohne mache, läd er 5 sekunden und dann is nichts mehr...
hier mal der ganze code:
Delphi-Quellcode:
unit main_u;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, Menus, Buttons, ExtCtrls, TeeProcs, TeEngine, Chart,
  ImgList, DXDraws;

type
  TMain = class(TForm)
    NutzerEingabe: TEdit;
    version: TLabel;
    VKCoach: TLabel;
    MainMenu: TMainMenu;
    Datei: TMenuItem;
    BeendenMenu: TMenuItem;
    voka: TLabel;
    ausgabelabel: TLabel;
    eingabelabel: TLabel;
    OK: TBitBtn;
    YesOrNo: TImage;
    TextRight: TLabel;
    antwort: TLabel;
    answer: TLabel;
    Beenden: TBitBtn;
    art: TLabel;
    Info: TMenuItem;
    Auswertung: TButton;
    procedure BeendenMenuClick(Sender: TObject);
    procedure BeendenClick(Sender: TObject);
    procedure OKClick(Sender: TObject);
    procedure InfoClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure AuswertungClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type TEintrag = record
  englisch,
  deutsch: string[255];
end;

var
  Main: TMain;
  F: textfile;
  a: string[255];
  liste: Array of TEintrag;
  Gesamt: Integer;
  Richtig: Integer;
  Falsch: Integer;

implementation

{$R *.DFM}
procedure readinifile(dateiname: string);
begin
assignfile(F, dateiname);
reset(F);
while not EOF(F) do
begin
try
setlength(liste, length(liste) +1 );
readln(a);
readln(a);
liste[high(liste)].deutsch := a;
readln(a);
liste[high(liste)].englisch := a;
except
setlength(liste, length(liste) -1 );
end;
end;
closefile(F);


end;

function getrandomitem: TEintrag;
begin
  if length(liste) <>0 then
  Result := liste[round(high(liste)* random)];
end;
//END!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
procedure TMain.BeendenMenuClick(Sender: TObject);
begin
 Close;
end;

procedure TMain.BeendenClick(Sender: TObject);
begin
 Close;
end;


procedure TMain.OKClick(Sender: TObject);
var
 puffer: TEintrag;
begin
 if ansilowercase(NutzerEingabe.Text) = puffer.englisch then
  begin
   TextRight.Caption := 'Richtig';
   YesOrNo.Picture.LoadFromFile('Graphics/yes.bmp');
   NutzerEingabe.SetFocus;
   puffer :=getrandomitem;
   readinifile('d-e.ini');
   voka.Caption := puffer.deutsch;
   Auswertung.Enabled := True;
   Gesamt := Gesamt + 1;
   Richtig := Richtig + 1;
  end
 else
  begin
   TextRight.Caption := 'Falsch';
   YesOrNo.Picture.LoadFromFile('Graphics/no.bmp');
   answer.Visible := true;
   antwort.Caption := puffer.englisch;
   NutzerEingabe.SetFocus;
   puffer :=getrandomitem;
   readinifile('d-e.ini');
   voka.Caption := puffer.deutsch;
   Auswertung.Enabled := True;
   Gesamt := Gesamt + 1;
   Falsch := Falsch + 1;
  end;
end;

procedure TMain.InfoClick(Sender: TObject);
begin
 Info.Visible := True;
end;

procedure TMain.FormCreate(Sender: TObject);
var
 puffer: TEintrag;
begin
 puffer :=getrandomitem;
  readinifile('d-e.ini');
  voka.Caption := puffer.deutsch;
  Gesamt := 0;
  Richtig := 0;
  Falsch := 0;
end;

procedure TMain.AuswertungClick(Sender: TObject);
var
 Ergebnis: Integer;
begin
 Ergebnis := Gesamt div Richtig * 100;
   TextRight.Caption := IntToStr(Ergebnis) + '% richtig';
   YesOrNo.Visible := False;
   answer.Visible := False;
   antwort.Visible := False;
end;

end.
Vielleicht hilft das..

[edit]Fataler Fehler: Ausgabedatei:'F:\Dokumente und Einstellungen\...\vkcoach.exe' kann nicht erstellt werden[/edit]
cya PhöniX
besucht www.lycoweb.de
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#9

Re: Bestimmte Stellen aus String List lesen

  Alt 1. Feb 2004, 00:40
procedure TMain.OKClick(Sender: TObject);
var
puffer: TEintrag;
begin
if ansilowercase(NutzerEingabe.Text) = puffer.englisch // <--- ist zu dem Zeitpunkt ''
then
begin
TextRight.Caption := 'Richtig';
YesOrNo.Picture.LoadFromFile('Graphics/yes.bmp');
NutzerEingabe.SetFocus;
[...]
ojee.... du solltest den Puffer oben zu den globalen Variablen dazutun weil der in der Prozedur am anfang leer ist.
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#10

Re: Bestimmte Stellen aus String List lesen

  Alt 1. Feb 2004, 00:42
und wenn du das Programm aus dem Explorer raus startest, also ohne Debugger dann dürfte da keine Fehlermeldung kommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 13:44 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