| Autor |
Beitrag |
Johannes Maier
      
Beiträge: 173
Win XP
D7 Prof
|
Verfasst: Fr 23.04.04 20:30
Mach es doch einfach OHNE eine StringList
Mit Assign, Reset, Rewrite oder so geht das bei den wenigen Zahlen die du benutzt viel einfacher!
Den Code hab ich oben schon zweimal gepostet. Das auf mehr Variablen auszudehnen dürftest du wohl alleine schaffen
MfG
Johannes
_________________ MfG
Johannes ehem. jbmaier
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mo 26.04.04 15:34
also wie gesagt. wenn ich es so mache wie du meintest dann schmiert mir delphi ab. ich hab bei mir jetzt mal versucht mit capity zu arbeiten nur weiß ich gar nicht was der befehl genau macht 
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 10:01
ich möchte gerne aus einer TextFile die werte in eien Stringlist laden. und den wert aus eienr StringList möchte ich dann in einer Variablen speichern damit ich dann den Wert auch als x-Koordinate zum zeichnen verwenden kann.
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mi 28.04.04 10:17
@ForzaFCH
Eine Antwort hättest du schon sehr, sehr sehr früh haben können. Eine Antwort mit der du auch etwas anfangen kannst. Der Grund wieso es sich so zieht ist, daß du deine Frage so bescheuert formulierst. Du hast ein konkretes Problem, stellst aber deine Frage so allgemein, daß alle nur um das Problem herumreden können. Mit deiner Frage oben kann keiner so richtig was anfangen.
Warum stellst du z.B. immer noch die Frage wie man eine Textdatei in eine StringList laden kann. Das müßtest du inzwischen wissen. Jetzt werden zig Leute sich erst um dieses Problem kümmern. Die andere Sache sind die Koordinate. Keiner weiß so richtig wie sie bei dir aussehen. Deshalb weiß auch keiner was du wissen willst. Deshalb kriegst du jede menge wirrer Antworten mit denen du wiederum nichts anzufangen weißt.
Rauf dich auf und mach eine richtige Problembeschreibung. Gib Beispieldaten wie das bei dir aussieht. Was brauchst du? Wieviel brauchst du? Was machen die? Solange du das nicht machst wird sich nichts ändern.
Ich kann dir sofort ein Beispiel machen und ich wette mit dir, daß es beim ersten mal richtig wird. Es wird sogar so einfach sein, daß du es nachvolziehen kannst. Ich mache es aber nicht, denn ich hab keine Lust, daß du dann kommst und sagst, daß du das anders meinst. Nicht ich bin dafür verantwortlich dich auszufragen wie du es haben möchstest, sondern du muß mir sagen wie deine Aufgabenstellung aussieht.
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 10:50
jo ich würd es ja gern formulieren, nur bin ich neu in der delphi szene aber ich werds mal probieren.
also meinen sourcecode kannsch jetzt nicht abtippen , weil der gesamte code auf meinen laptop liegt und ich auch keine möglichkeit hab den auf den rechner meiener firma hier raufzuspielen
also mein Ziel: Berechnung von Kenngrößen wie (Widerstand, Stromstärke, Spannung)
die werte von Widerstand und Spannung sollen dann in 2 unterschiedlichen Textdateien abgespeichert werden.
sprich
edit1.txt
Quelltext
das wären dann z.B. meine X-Werte
edit2.txt
Quelltext
das wären dann z.B. meine Y-Werte
ich will nämlich dann eien R/U Kennlinie in einem KoordinatenSystem darstellen.
das berechnen funktioniert soweit auch schon alles nun hab ich aber das Problem das ich die Werte aus meinen Textdatein in einer Variable speichern will.
damit ich die Kurve oder gerade dann nicht absolut zeichne sondern halt von den werten in meiner Textdatei abhänig zeichne.
hab die Werte dann in eine StringList gelden. meine frage wär also wie ich die werte die in einer StringList stehen als Variabel definiere.
Delphi-Quelltext
irgendwie so hät ich mir das gedacht hab aber noch nich wirklich was hinbekommen.
und dann würd ich noch gerne wissen wie ich das dann egnau zeichne weil zur zeit kann ich nur eien gerade zeichen. aber will ja das eine linie vom Koordinatenurpsrung gezeichnet wird und dann dann wieder zurück und das nächste paar als linie zeichnet
Delphi-Quelltext 1: 2:
| korSystem.Canvas.MoveTo(200,200); korSystem.Canvas.LineTo(200+(StrToInt(SX));200-(StrToInt(SY))); |
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mi 28.04.04 11:51
Gehören die X und Y Werte zusammen und bilden sie ein Koordinatenwert? Warum dann auf zwei Dateien verteilen?
Als Lösung hab ich was anderes gemacht. Ich hab die Werte in eine Datei gepackt und sie mit einem Semikolon getrennt:
Quelltext 1: 2: 3: 4: 5:
| 12;7 24;13 10;190 5;12 120;4 |
Der erste Wert ist bei mir X, der Zweite ist Y. Um sie zu trennen hab ich Funktion ZeichenKetteAufloesen geschrieben. Da es mindestens zwei Rückgabewerte gibt, hab ich die Ausgabe der x, y Werte in den Parameterbereich gelegt und hab der Funktion eine Fehlermeldung spendiert. Die Werte x, y hab ich, da es strings sind, s1 und s2 genannt. Ansonsten hab ich anstelle eines StringList im Beispiel ein Memo genommen. Du kannst es aber jede Zeit mahen wie du willst.
Für das Beispiel machst du ein leeres Projekt und legst eine Memo und ein Button auf das Formular.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| function ZeichenKetteAufloesen(s: String; var s1, s2: String): Word; const d = ';'; begin s := Trim(s);
Result := 1; if Pos(d, s) = 0 then Exit;
Result := 2; if Pos(d, s) = 1 then Exit;
s1 := Trim(Copy(s, 1, Pos(d, s) - 1)); Delete(s, 1, Pos(d, s)); s2 := Trim(s);
Result := 0; end;
procedure TForm1.Button1Click(Sender: TObject); var i: Integer; s, s1, s2: String; begin Canvas.MoveTo(0,0);
with Memo1.Lines do for i := 0 to Count - 1 do begin s := Strings[i]; if Trim(s) = '' then Continue;
if ZeichenKetteAufloesen(s, s1, s2) > 0 then begin MessageDlg('Fehlerhafte Werte in Zeile: ' + IntToStr(i + 1), mtError, [mbOK], 0); Exit; end;
Canvas.LineTo(StrToInt(s1), StrToInt(s2)); end; end; |
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 12:27
ich probiers mal 
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 12:30
also ich würd es gerne mit der stringlist arbeiten. aber bei der gibt es ja nicht so einen befehl wie bei dem memo de lines befehl.
ich bräuchte sozusagen nur die form wie ich den wert aus eienr stringlist in eien variable speicher 
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mi 28.04.04 12:55
Tut mir leid, ich gebe es auf. Du hast anscheinend keine Ahnung von Delphi und versuchst dir ein Programm zusammen zu schnoren. Memo1.Lines ist TStrings und StringList ist auch TStrings. Verstanden? Nix mehr Befehle. Du brauchst nur Memo1.Lines gegen den Namen deiner StringList zu tauschen und schon funktioniert das alles mit StringList. Zwischen Memo1.Lines und StringList gibt es keinerlei unterschied. Guckst du auch schon mal in die Delphihilfe und zu sehen was dir die Leute für Tips geben? Oder funktioniert das bei dir so, daß due es ausprobiers und wenn es nicht so funktioniert wie du es willst, dann fragst du noch mal. Irgendwie schon auf die Idee gekommen selbst den Code anzupassen?
Aber das alles kann man noch vergeben. Was dich aber für jeglich weitere Hilfe disqualifiziert ist dieser Satz:
| Zitat: | | ich bräuchte sozusagen nur die form wie ich den wert aus eienr stringlist in eien variable speicher |
Du blickst komplett nicht durch. Du hast Null Ahnung was da vor sich geht und deshalb stellst du solche Fragen. Du kennst Begriffe, kannst aber mit denen nichts anfangen.
Ich hab dir gerade gezeigt wie du Werte aus StringList an eine Variable übergibst (nicht speichern, das ist falsch). Und dennoch fragst du noch mal. StringList ist eine Liste mit String-Zeilen. Du kannst dir eine Zeile nehmen und zu Integer konvertieren. Aber da blickst du sowieso nicht durch.
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 13:01
beruhig dich mal wieder. ich hab doch auch oben schonmal gesagt das ich noch nicht lange mit delphi arbeite. und die hilfe hab ich auch benutzt sonst wäre ich auch nicht so weit gegkommen. aber wenn du meinst das ich mir was zusammenschnorre ist das deine meinung die ich zwar nicht teile aber egal. ich hab hier keinnen gebeten mir das fertige programm zu geben. ich wollte nur die syntax eine befehles haben. nix weiter. und du machst gleich ein fass auf. wenn ich das da bloß ersetzten muss is ja jut wußte ich ja nicht.
no comment
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
Zuletzt bearbeitet von ForzaFCH am Mi 28.04.04 13:32, insgesamt 1-mal bearbeitet
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mi 28.04.04 13:08
Du verstehst es anscheinend noch nicht. Es gibt nicht den Befehl. Das gibt es nicht. Das mußt du über viele Zeilen lösen. Dein Problem hab ich schon im zweiten Beitrag erkannt. So klug ist Delphi nun auch nicht, daß es wüßte was du willst.
| Zitat: | | wenn ich das da bloß ersetzten muss is ja jut weußte ich ja nicht. |
Sowas weiß man aber wenn man sich das Beispiel genauer anguckt und man alles was man nicht versteht in der Hilfe anguckt.
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 13:34
aha. ich hab es zwar jetzt auch mal mit deinen hinweis versucht aber klappen tut es nicht. naja irgenwann werd ich auch das hinbekommen 
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 28.04.04 13:52
So, Leute, jetzt beruhigt Euch erst mal wieder. Es bringt niemanden weiter, wenn man den anderen angreift.
| Zitat: | | aha. ich hab es zwar jetzt auch mal mit deinen hinweis versucht aber klappen tut es nicht. naja irgenwann werd ich auch das hinbekommen |
Dann zeige doch, wie der Quelltext aussieht, mit dem Du es versucht hast, und wir sagen Dir, was Du falsch machst.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 14:06
wie schonmal geschrieben.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| var Sx,Sy :String; ListX: TStrings; ListY: TStrings; ..... begin ListX := TStringList.Create; ListY := TStringList.Create; ListX.LoadFromFile('c:\edit.txt'); ListY.LoadFromFile('c:\edit2.txt'); SX:=FloatToStr(ListX. ...); SY:=FloatToStr(ListY. ...); begin KorSystem.Canvas.moveto(200,220); KorSystem.Canvas.LineTo(StrToInt(Sx),StrToInt(Sy)); end; end; |
das halt der teil der hierfür wichtig ist denek ich mal 
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 28.04.04 14:17
Hm. Du scheinst nicht wirklich viel von den Anregungen, die Du durch den Quelltext von bms erhalten haben solltest, umgesetzt zu haben.
Also, der Reihe nach:
Delphi-Quelltext 1: 2:
| SX:=FloatToStr(ListX. ...); SY:=FloatToStr(ListY. ...); | Kann nicht gehen. Denn Sx hält nur eine Zahl, ListX enthält ja nun aber ziemlich viele Zahlen. Du musst also irgendwie angeben, welche der Zahlen aus ListX Du in SX haben willst. Wie das geht, hat Dir bms bereits gezeigt:
Delphi-Quelltext 1: 2: 3: 4:
| with Memo1.Lines do for i := 0 to Count - 1 do begin s := Strings[i]; |
Damit kannst Du (wenn Du es an Deine Bedürfnisse anpasst) die Zeilen (und dmait auch Zahlen) in der StringList einzeln durchgehen. Und dann nach einander zeichnen.
MfG
Peter
P.S.:
| Zitat: | | ch hab es zwar jetzt auch mal mit deinen hinweis versucht |
Hm, also in dem von Dir geposteten Quellcode steckt aber rein gar nichts von bms' Hinweisen .... 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 14:19
hab ich ja auch wieder rückgänig gemacht. 
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 14:23
ICH HAB ES HINBEKOMMEN  ob ihr glaubt oder nicht
jetzt sag ich ihm ja das er den Str in einen Integer umwandeln soll, bevor er es zeichnet
Delphi-Quelltext 1:
| KorSystem.Canvas.LineTo(200+StrToInt(SX),200-StrToInt(Sy)); |
aber es kommt bei mir vor das ich auch komma werte rausbekomme. muss ich dann noch mit StrTofloat arbeiten?
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mi 28.04.04 15:43
@ForzaFCH
Bevor du überhaupt weiter machst solltest du dir zuerst im klaren sein in welcher Form du die Daten gespeichert hast. Nicht einfach zwei Textdateien wo x und y für sich alleine rumliegen, sondern konkret sagen, daß es so ist. Ich hab dir ein Model vorgeschlagen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| 12;7 24;13 10;190 5;12 120;4 |
Hier hast du X und Y in einer Liste, getrennt durch Semikolon. Wenn du weiter mit einer Liste für X und einer anderen für Y machst, dann wundere dich nicht wenn du nicht das kriegst was du brauchst.
Also, entscheide dich zuerst für die Form wie deine Daten zu verfügung stehen.
Und noch was: StrToFloat ist falsch. Du brauchst Integer-Zahlen. Flat ist Real-Zahl. Du brauchst StrToInt.
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
ForzaFCH 
      
Beiträge: 80
D6 / D7 Personal
|
Verfasst: Mi 28.04.04 15:59
ich hab es wie schon gesagt. in 2 datein. will ich ja auch so. nur bei meienr berechung kommt halt auhc mal ein widerstand von 12,30 raus aber dann mekert er mich wenn er zeihcnen soll is kein gültiger integerwert  bei den anderen zahlen geht es ja wie z.b 1 oder 120
_________________ HANSA ROSTOCK DU SOLLST STRAHLEN..... *sing* Für immer und ewig FC hansa Rostock!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 28.04.04 16:00
Dann musst Du wirklich StrToFloat nehmen und hinter runden (Round) oder die Nachkommastellen abschneiden (Trunc).
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|