Autor |
Beitrag |
Thunfisch 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 29.06.11 16:52
Oh mann :/
Ich schaffs einfach nicht. Immer irgendwelche komischen Fehler. Langsam verzweifle ich
Ich muss im Prinzip nur wissen, wie ich 1#fisch#fish sowas auslese und in einem record speichere
Also eine ganze Textdatei mit mehreren solcher Strings...
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 29.06.11 19:20
Zitat: | Immer irgendwelche komischen Fehler. |
Wie jaenicke auch schon angemerkt hat: Wenn du uns nicht sagst, welche komischen Fehler bei dir auftauchen, können wir nur schlecht helfen. Der Code oben sieht korrekt aus und scheint zu funktionieren (jdf. bekomme ich die richtige showmessage ausgabe).
Für diesen Beitrag haben gedankt: Thunfisch
|
|
Thunfisch 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 29.06.11 19:34
wenn ich versuche die funktion aufzurufen kommt : Nicht genügend wirkliche parameter
Habe ich shcon gegoogelt und dort stand, dass man sich den quellcode nochmal ganz genau anschauen sollte
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 29.06.11 19:46
Nicht genügend wirkliche parameter, sagt doch eigentlich was da fehlt, dir fehlt ein (oder mehrere) Parameter  Zeig mal wie du die Funktion im Quelltext benutzt.
Für diesen Beitrag haben gedankt: Thunfisch
|
|
Thunfisch 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 29.06.11 19:52
Ich hab es einfach so ausprobiert :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.b_testClick(Sender: TObject);
begin
StrToVokabelInfo() ;
end; |
Und wie kann ich eine einfache Abfrage gestalten von allen vokabeln die in der text datei liegen ?
Zuletzt bearbeitet von Thunfisch am Mi 29.06.11 20:01, insgesamt 1-mal bearbeitet
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 29.06.11 20:00
Hast du die Funktion selbst geschrieben? In der Signatur steht doch, dass der du Funktion auch einen String als Parameter übergeben musst (dieser wird dann in ein TVokabelInfo umgewandelt). Also ungefähr so:
Delphi-Quelltext 1:
| StrToVokabelInfo('12#mutig#brave') ; |
Für diesen Beitrag haben gedankt: Thunfisch
|
|
Thunfisch 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 29.06.11 20:02
Und wie kann ich eine einfache Abfrage gestalten von allen vokabeln die in der text datei liegen ?
Aber kann ich da auch meine ganze vokabel list reinsetzen? also wenn ich die vorher in eine Tstringlist geladen habe
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 29.06.11 20:06
Am einfachsten wäre es, wenn du alle Einträge der TStringlist durchgehst und für jeden Eintrag die Funktion aufrufst.
Achte aber drauf, dass du mit den Rückgabewerten der Funktion auch was anstellst, sonst sind die nämlich weg 
Für diesen Beitrag haben gedankt: Thunfisch
|
|
Thunfisch 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 29.06.11 20:13
Ja mensch cih hab total den Blackout
Wie wäre es mit :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var testlist : Tstringlist; ShortSpeicher : array[3..,500..];
begin testlist := tstringlist.create ; testlist.loadfromfile('vokabeln.txt') ;
For i := 1 to ID begin StrToVokabelInfo(testlist[i]) ;
ShortSpeicher[1,i] := testlist[i].ID; Shortspeicher[2,i] := testlist[i].detusch; Shortspeicher[3,i] := testlist[i].englisch;
end; |
Ich bekomme immer, wenn ich StrtoVokabelinfo() aufrufe eine fehlermeldung: [Fehler] Unit1.pas(275): Inkompatible Typen: 'String' und 'TStringList'
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 29.06.11 20:25
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var i:integer; testlist : Tstringlist; ShortSpeicher : array[0..500] of TVokabelInfo;
begin testlist := tstringlist.create ; testlist.loadfromfile('vokabeln.txt') ;
For i := 0 to testlist.count-1 ShortSpeicher[i]:=StrToVokabelInfo(testlist.lines[i]) ;
testlist.free(); end; |
Das klappt immerhin schonmal, wenn insgesamt weniger als 500 Vokabeln vorhanden sind (besser wäre es die Anzahl der Vokabeln dynamisch auszulesen). ShortSpeicher sollte aber global definiert werden, sonst sind die eingelesenen Daten am Ende der Prozedur auch wieder weg.
Für diesen Beitrag haben gedankt: Thunfisch
|
|
Thunfisch 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 29.06.11 20:40
Warum denn keine Matrix mehr?
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 29.06.11 20:41
Wofür willst du die Matrix haben? Du hast doch schon dein Record TVokabelInfo, dann kommst du mit ShortSpeicher[i].deutsch etc. bequem an die Werte.
|
|
Thunfisch 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 29.06.11 21:07
Hier habe ich mir eine neue funktion geschrieben aber mittels alt+v eingefügt und jetzt meldet mir delhpi eine Menge komischer Probleme.
Wie muss ich diese procedure oben in die types einfügen?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.StrToVokabelInfo(str: string; var vokabel: TVokabel); var i, j: integer; temp1: string; begin vokabel.id ''; vokabel.Deutsch := ''; vokabel.Englisch := ''; i := 1; while str[i] <> '#' do begin vokabel.id := vokabel.id + str[i]; i := i + 1; end;
i := i + 1; while str[i] <> '#' do begin vokabel.Deutsch := vokabel.Deutsch + str[i]; i := i + 1; end; for j := i + 1 to length(str) do begin vokabel.Englisch := vokabel.Englisch + str[j]; end; end; |
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mi 29.06.11 21:26
"Eine Menge komischer Probleme" ist eine saubere Fehlerbeschreibung.
Weißt du eigentlich was du da machst? In der ersten zeile fehlt dir ein Zuweisungsoperator und wenn du aus ID nicht jetzt einen String gemacht hast (vorher wars ein integer) klappt deine erste Teilschleife so nicht.
P.S: Die Meldungen der komischen probleme sagen dir eigentlich recht deutlich wo etwas im argen liegt.
|
|
Thunfisch 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 29.06.11 21:39
sorry für die ungenaue beschreibung. Hier nochmal alle fehlermeldungen, die ich bekomme (Ich denke durch die richtige definierung in type lösen sich die meisten):
[Fehler] Unit1.pas(41): Undefinierter Bezeichner: 'TVokabel' (habe ich definiert)
[Fehler] Unit1.pas(56): Bezeichner redefiniert: 'TVokabel'
[Fehler] Unit1.pas(93): Operator oder Semikolon fehlt (mitten in der zeile bzw befehl)
[Fehler] Unit1.pas(94): Operator oder Semikolon fehlt (mitten in der zeile bzw befehl)
[Fehler] Unit1.pas(104): ',' oder ')' erwartet, aber Bezeichner 'D' gefunden
[Fehler] Unit1.pas(104): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(201): Inkompatible Typen: 'TObject' und 'String'
[Fehler] Unit1.pas(213): Deklaration von 'StrToVokabelInfo' unterscheidet sich von vorheriger Deklaration
[Fehler] Unit1.pas(218): Operator oder Semikolon fehlt
Und noch ca 10 mal operator oder semikolon fehlt
Wie gesagt Zitat: | Ich denke durch die richtige definierung in type lösen sich die meisten |
Also ich brauch nur wissen wie man die prozedur manuell in die type deklaration einträgt. Den Rest bekomme ich selbst hin
|
|
Oliver Maas
      
Beiträge: 55
|
Verfasst: Mo 04.07.11 17:47
Hi
ich bin vermutlich spät dran, aber du hast ja (nehme ich an) ein Formular der Klasse TForm1,
darunter gibt es dann ja private ... public ... end;
Wenn du die procedure private haben willst, dann schreib unter private
Quelltext 1:
| procedure StrToVokabelInfo(str: string; var vokabel: TVokabel); |
zudem kannst du ja TVokabel vor TForm1 deklarieren.
viele Grüße
Olli
|
|