![]() |
Bestimmte Stellen aus String List lesen
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:
wie krieg ich jetzt hin, dass einer der ersten wörter (ja,nein,gut) ausgelesen wird und dann der dazugehörige zweite..??
ja
yes nein no gut good wobei der erste immer zufällig sein soll... |
Re: Bestimmte Stellen aus String List lesen
wenn du dich an die Formatierung hältst kannst du das so machen
Delphi-Quellcode:
Edit: Kommentare
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: dateiname durch variable ersetzt |
Re: Bestimmte Stellen aus String List lesen
was brauch ich denn davon und was nicht?? :gruebel:
ich will sowas machen:
Delphi-Quellcode:
kannst du mir mal den code posten und an die stelle der kommentare das einfügen, was da hin gehört??
label1.caption := //eine zufällige erste zeile der string list;
... if edit1.text = //die dazugehörige untere zeile then ... und das übrige auch :wink: aber an die stellen, an die du z.b. datei.ini schreibst, schreib einfach nen kommentar was da hingehört...das wär dann :thuimb: :thuimb: :thuimb: |
Re: Bestimmte Stellen aus String List lesen
hoff es is jetzt klarer :roll:
|
DP-Maintenance
Dieses Thema wurde von "sakura" von "Datenbanken" nach "Sonstige Fragen zu Delphi" verschoben.
|
Re: Bestimmte Stellen aus String List lesen
ja...habs mal ausprobiert..
aber ich krieg noch nen exeption fehler:
Delphi-Quellcode:
[edit] Fehler: EInOutError [/edit]
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; |
Re: Bestimmte Stellen aus String List lesen
Delphi-Quellcode:
[edit=thomasdrewermann]Delphi-Tags ergänzt Mfg, thomasdrewermann[/edit]
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; |
Re: Bestimmte Stellen aus String List lesen
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:
Vielleicht hilft das.. :spin:
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. [edit]Fataler Fehler: Ausgabedatei:'F:\Dokumente und Einstellungen\...\vkcoach.exe' kann nicht erstellt werden[/edit] |
Re: Bestimmte Stellen aus String List lesen
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. |
Re: Bestimmte Stellen aus String List lesen
und wenn du das Programm aus dem Explorer raus startest, also ohne Debugger dann dürfte da keine Fehlermeldung kommen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz