![]() |
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
|
Re: Bestimmte Stellen aus String List lesen
Wenn ichs ohne Debugger starte läd er 5 Sekunden und dann ist nichts mehr...
Er findet den Fehler immer noch:
Delphi-Quellcode:
Vielleicht ist auch irgendwas an den Komponenten falsch... :gruebel:
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
Ich an deiner Stelle würde mal meine grauen Zellen aktivieren und mal selber eine Lösung erarbeiten.
Als kleinen Denkanstoß könntest du versuchen diese Frage zu beantworten: Ist a <> f ? :mrgreen: |
Re: Bestimmte Stellen aus String List lesen
Natürlich ist a <> f...
Aber ich hab sowas noch nie gemacht und weiß daher auch nicht wo der FEhler liegt (Was muss denn a immer sein)(Bei mir ist a: String[255];) |
Re: Bestimmte Stellen aus String List lesen
Wenn dir bekannt ist, daß a <> f ist, warum programmierst du dann nicht auch so.
Edit: Wenn man von programmieren überhaupt sprechen kann, wenn man simple Fehler in einem Copy-Paste Quellcode nicht erkennen kann |
Re: Bestimmte Stellen aus String List lesen
:wiejetzt: Ich hab da keine Ahnung von...Kann mir nicht einer sagen wies geht?? :wiejetzt:
|
Re: Bestimmte Stellen aus String List lesen
ich hab den string in seiner Länge festgelegt weil sonst probleme bei der Objektorientierung auftreten, dann wenn man versucht das Objekt zu freeen. nimm halt mal sting;
|
Re: Bestimmte Stellen aus String List lesen
sting?? wohin damit?
|
Re: Bestimmte Stellen aus String List lesen
var
a,b,c: string; [...] procedure readinifile(dateiname: string); begin assignfile(F, dateiname); reset(F); while not EOF(F) do begin if not EOF(F) then readln(F,a) else abort; if not EOF(F) then readln(F,b) else abort; if not EOF(F) then readln(F,c) else abort; setlength(liste, length(liste) +1 ); liste[high(liste)].deutsch := b; liste[high(liste)].englisch := c; end; closefile(F); end; |
Re: Bestimmte Stellen aus String List lesen
Delphi-Quellcode:
ES GEHT IMMER NOCH NICHT :!: :!: :wall: :wall: :wall:
a,b,c: string;
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 if not EOF(F) then readln(a) else abort; if not EOF(F) then readln(b) else abort; if not EOF(F) then readln(c) else abort; setlength(liste, length(liste) +1 ); liste[high(liste)].deutsch := b; liste[high(liste)].englisch := c; end; closefile(F); |
Re: Bestimmte Stellen aus String List lesen
was? gibts immer noch den Fehler beim Laden?
|
Re: Bestimmte Stellen aus String List lesen
Delphi-Quellcode:
Wenn ich Punkt hinmach ist die gesamte Unit abgeschlossen und die proceduren danach werden nicht mehr gemacht..
procedure readinifile(dateiname: string);
begin assignfile(F, dateiname); reset(F); while not EOF(F) do begin if not EOF(F) then readln(a) else abort; if not EOF(F) then readln(b) else abort; if not EOF(F) then readln(c) else abort; setlength(liste, length(liste) +1 ); liste[high(liste)].deutsch := b; liste[high(liste)].englisch := c; end; closefile(F); end; end;//<- '.' erwartet aber ';' gefunden |
Re: Bestimmte Stellen aus String List lesen
Es ist erforderlich den kompleten Pfad auf die Datei anzugeben + vollständigem Namen, vermutlich liegt dort ein Fehler.
|
Re: Bestimmte Stellen aus String List lesen
procedure readinifile(dateiname: string);
begin assignfile(F, dateiname); reset(F); while not EOF(F) do begin if not EOF(F) then readln(F,a) else abort; if not EOF(F) then readln(F,b) else abort; if not EOF(F) then readln(F,c) else abort; setlength(liste, length(liste) +1 ); liste[high(liste)].deutsch := b; liste[high(liste)].englisch := c; end; closefile(F); end; achja readinifile(ExtractFilePath(Application.Exename)+' d-e.ini'); wenns im selben Verzeichnis is |
Re: Bestimmte Stellen aus String List lesen
Zitat:
|
Re: Bestimmte Stellen aus String List lesen
Hallo PhöniX / Cylon
Den Veröffentlichungstermin für deinen Vokabeltrainer musst du noch etwas nach hinten schieben. Oder hälst Du den auf ![]() Eine Grundlagenschulung, bzw. das Studieren von Tutorials, wäre zuerst angebracht. :wink: Gruss Blawen |
Re: Bestimmte Stellen aus String List lesen
^^ :stupid: ^^
ja und?? (haste mal nen Tutorial zu Strings und sowas?? Ich hab noch keins gefunden)... |
Re: Bestimmte Stellen aus String List lesen
Zitat:
Z.B.: ![]() ![]() ![]() zwar kein direktes Tutorial: (aber trotzdem gut) ![]() Ansosnten Google verwenden... (z.B. Suchbegriff Delphi + String) ![]() Gruss Blawen |
Re: Bestimmte Stellen aus String List lesen
hallo phönix!
ich würde es mal so versuchen
Delphi-Quellcode:
sonst wartet das programm auf eine eingabe von der tastatur ;)
readln(F,deinen_String);
mfg, stefan |
Re: Bestimmte Stellen aus String List lesen
ops leicht blind und zu müde. sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry sorry
|
Re: Bestimmte Stellen aus String List lesen
und niemand hats gemerkt... ouh jeh. Ja des is schon en stück blindheit meinerseits, habs halt nie in Delphi ausprobiert.
klarklar beim Lesen aus ner Datei Readln(F, Variable). Tut mir echt sorry wg. der Verwirrung. :wall: :wall: :wall: :wall: |
Re: Bestimmte Stellen aus String List lesen
hmm...
jetzt hab ich schon ne datenbank aber trotzdem danke.. :angle: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 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-2025 by Thomas Breitkreuz