![]() |
Extended Problem
Hey Leute,
ich habe ein Problem. Und zwar, wie kann ich das Format Extended in einen String konvertieren um ihn dann in einem StrigGrid anzeigen zu lassen :?: Ich habe irgenwie keine sinnvolle Lösung dazu :wall: :wall: Ok, hoffentlich gibt es jemand der mir helfen kann :) mfg CT86 |
Re: Extended Problem
Str(Zahl:Stellen:Dezimalstellen,BufferString);
Als Dezimaltrenner wird bei Str aber immer der Punkt benutzt... Ohne die "Rundung" und mit dem Dezimaltrenner der Systemeinstellung arbeitet "FloatToStr" :zwinker: Gruß Stephan |
Re: Extended Problem
Hallo,
schon "FloatToStr" probiert :stupid: Gruß s14 |
Re: Extended Problem
Hab ich jetzt mal ausprobiert. Aber dann bekomme ich eine Fehlermeldung Extended Variable nicht initialisiert wäre! Kann damit jemand was anfagen?
Ich habe es jeweils so ausprobiert: (x: Extended; c: String;) Str(x:6:2, c); und so c := FloatToStr(x); |
Re: Extended Problem
Ich glaube es gibt auch
![]() |
Re: Extended Problem
Und noch eine Möglichkeit, wahrscheinlich die flexibelste:
![]() |
Re: Extended Problem
Hey Toxman, hier ist die Procedure, ich will ddie Ergebniss in einem StringGrid anzeigen und nicht in einem Memo. Und dahin kommt noch dazu, dass die x-Werte zur Laufzeit eingegeben werden sollten/können nicht müssen. Also wäre es doch gut wenn das ganze dann in einer Schleife stehen würde, Oder :gruebel: :?:
Delphi-Quellcode:
:wall:
procedure TForm1.Button1Click(Sender: TObject);
var x,y: extended; term: string; begin term := edit1.text; // Das ist unwichtig!!! // memo1.text := 'x f(x)'; // memo1.Font.Name := 'Courier New'; x := -5; repeat y := termToReal(term,x); memo1.lines.Add(formatfloat(' 0.0 ;-0.0 ', x) + formatfloat('0.###',y)); x := x + 1/2; until x > 5; end; mfg CT86 |
Re: Extended Problem
Delphi-Quellcode:
StringGrid1.Cells[x,y] := 'Mein Text';
|
Re: Extended Problem
Delphi-Quellcode:
StringGrid1.Cells[ACol, ARow] := FormatFloat(' 0.0 ;-0.0 ', x) + FormatFloat('0.###',y));
|
Re: Extended Problem
Hi!
Zitat:
Wegen dem oben zitierten erstellst du am besten einen neuen Thread, dann geht es nicht so durcheinander :wink: Ciao Frederic |
Re: Extended Problem
Hey
Also wenn ich das von luckie ausprobiere kommt das hier:
Delphi-Quellcode:
und wenn ich das von mytar eingebe kommt das hier:
[Error] Unit1.pas(143): Incompatible types: 'Integer' and 'Extended'
Delphi-Quellcode:
:wiejetzt: :wiejetzt: Also irgenwie hab ich echt kein peil :gruebel:
[Error] Unit1.pas(144): Incompatible types: 'Integer' and 'TStringGrid'
mfg CT86 PS: Hab ihr vielleicht noch ne Idee :?: |
Re: Extended Problem
HI!
Bei dem Code von Luckie liegt wohl der gedankliche Fehler darin, dass er dir nur den "Prototyp" zu "wie schreibe ich in ein StringGrid" geliefert hat. Du musst anstelle von x und y in den [ ] die Spalten- bzw. Zeilennummer der betreffenden Zelle, wo es rein soll angeben und dann sollte es gehen. Ciao Frederic |
Re: Extended Problem
Hey Leute,
jetzt bin ich soweit das ich das anzeigen kann was ich wollte, allerdings nicht wo ich wollte. Ich habe den Quelltext jetzt so verändert.
Delphi-Quellcode:
Jetzt ist es aber so das der Benutzer zur Laufzeit die x Werte eingeben kann. Wie bekomme ich das jezt in eine sinnvolle Schleife :?: Damit die Werte nachher auch in der richtigen reihenfolge stehen :?: :gruebel:
StringGrid1.Cells[0, 1] := FormatFloat('-0.0 ', x);
StringGrid1.Cells[1, 1] := FormatFloat('0.###',y); mfg CT86 |
Re: Extended Problem
Einfach 2 verschachtelte Schleifen:
Delphi-Quellcode:
with StrinGrid1 do
for Col := 1 to ColCount do for Row := 1 to RowCount do Cells[Col, Row] := 'Dein String'; |
Re: Extended Problem
Zitat:
Wenn ich es Starten will kommt diese Meldung:
Delphi-Quellcode:
mfg
[Error] Unit1.pas(140): For loop control variable must be simple local variable
CT86 |
Re: Extended Problem
Dannm mach das, was die fehlermeldung sagt. Deklarier die Zählvariable der Schleife als lokale Variable.
|
Re: Extended Problem
Zitat:
Hey, Kann mir die Aussage von Luckie, mal jemand erklären :?: Denn irgenwie versteh ich es nicht :wall: Hier noch mal die Meldung.
Delphi-Quellcode:
Luckie ist ja leider nicht mehr da, gibt es vielleicht jemand der mir das erklären kann :wall:
[Error] Unit1.pas(140): For loop control variable must be simple local variable
mfg CT86 |
Re: Extended Problem
das i (oder wie auch immer die variable heißt) nicht global sein darf, oder sonstwo deklariert, sondern direkt in der funktion, wo es verwendet wird.
|
Re: Extended Problem
Hey nailor,
mytar hat das hier geschrieben:
Delphi-Quellcode:
Und da kommt hinter dem ersten "to" diese Meldung!!! Kannst du damit was anfangen? Ich leider nicht!
with StrinGrid1 do
for Col := 1 to ColCount do for Row := 1 to RowCount do Cells[Col, Row] := 'Dein String'; mfg CT86 |
Re: Extended Problem
Das Problem könnte darin liegen, dass 'col' eine Eigenschaft vom stringgrid ist. Dadurch, dass du mit with ... do arbeitest, wird col nicht als deine Variable(?) sondern als Stringgrid1.col gelesen. Nenn mal Col in Col1 oder so um und probiers aus.
|
Re: Extended Problem
Zitat:
Delphi-Quellcode:
Aber dnake trotzdem :zwinker:
[Error] Unit1.pas(132): Undeclared identifier: 'Col1'
mfg CT86 |
Re: Extended Problem
zeig doch mal die ganze function oder procedure zusammen mit deinen Variablndeklarationen. So wird's schwierig
|
Re: Extended Problem
Hey Toxman, hier ist die Procedure, ich will ddie Ergebniss in einem StringGrid anzeigen und nicht in einem Memo. Und dahin kommt noch dazu, dass die x-Werte zur Laufzeit eingegeben werden sollten/können nicht müssen. Also wäre es doch gut wenn das ganze dann in einer Schleife stehen würde, Oder
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x,y: extended; term: string; begin term := edit1.text; // Das ist unwichtig!!! // memo1.text := 'x f(x)'; // memo1.Font.Name := 'Courier New'; x := -5; repeat y := termToReal(term,x); memo1.lines.Add(formatfloat(' 0.0 ;-0.0 ', x) + formatfloat('0.###',y)); x := x + 1/2; until x > 5; end; mfg CT86 |
Re: Extended Problem
Zitat:
|
Re: Extended Problem
Hey
Delphi-Quellcode:
Diese Meldung hier!
[Error] Unit1.pas(140): For loop control variable must be simple local variable
mfg Ct86 |
Re: Extended Problem
Delphi-Quellcode:
so. denk denk. was könnte man machen sollen? ps:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; i_eins: integer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i_zwei: integer; begin for i_zwei := 0 to 121 do for i_eins := 0 to 123 do beep; end; end. bei mir gibts keinen error, sondern der kompiliert mit: Zitat:
|
Re: Extended Problem
Wo hast du denn Row und Col deklariert? Ausserdem glaube ich wirklich, dass hier das Problem beim with .. do liegt.
|
Re: Extended Problem
Danke schön nailor, ich weiß ich stell mich echt blöd an :pale: Aber in manchen Sachen hab ich echt kein peil :wiejetzt: . Aber mit deiner Hilfe wird sich das nun ändern :!:
nailor :dp: mfg CT86 |
Re: Extended Problem
Hallo nailor,
Also so blöd ich auch sein mag, aber dein Vorschlag sah zwar gut aus funktionierte aber in keiner weise. Es soll ja auch mit dem StringGrid funsen und net nur mit nem beep. mfg CT86 |
Re: Extended Problem
Wo/Wie sind den die Variablen deklariert?
Delphi-Quellcode:
var col,row: integer;
begin for Col := 0 to StringGrid1.ColCount do for Row := 0 to StringGrid1.RowCount do StringGrid1.Cells[Col, Row] := 'Dein String'; // funzt wunderbar end; |
Re: Extended Problem
Hey Toxman du bist der Held des Tages, denn der erste der mir was geschrieben hat, wofür sogar mein Verstand ausreicht :dancer: Jetzt gibt es noch ein Problem! Jetzt steht ja in jeder Spalte und Zeile vom StringGrid der gleiche String. Ich muss aber in jeder Spalte und Zeile was eigenes stehen haben. Dazu kommt noch, dass in der ersten Spalte x-Werte stehen müssen die zur Laufzeit, durch Anfang und Ende Zahl z.B.(-3 bis 6) eingeben werden und das die zweite Spalte aus den Ergebnissen von der ersten Spalte und dem eingegebenen Term bestehen muss.
Hast du das verstanden :?: Wenn nicht ist auch nicht schlimm mfg CT86 |
Re: Extended Problem
Daraus kannst du auch selbst kommen. Um in die erste Spalte (senkrecht) Werte von, sagen wir mal 0-10 zu schreiben, musst du ja nur eine einfache Schleife von 0-10 laufen lassen (for i:=0 to 10) und dann in das Cells[0,i] das i reinschreiben. Wenn du das hast, kannst du fast genauso die zweite Spalte füllen.
Was ist das mit dem Term? Wenn das eine Werte-Tabelle werden soll, die zu einem vom User angegebene Funktion die Werte ausrechnet, würd ich mal sagen, dass das recht schwierig werden kann. :roll: |
Re: Extended Problem
Randbeschriftung, ungefähr so
Delphi-Quellcode:
StringGrid1.FixedRows := 1;
StringGrid1.FixedCols := 1; for Col := 1 to StringGrid1.ColCount do StringGrid1.Cells[Col, 1] := IntToStr(Col); for Row := 1 to StringGrid1.RowCount do StringGrid1.Cells[1, Row] := IntToStr(Row); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 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