Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Extended Problem (https://www.delphipraxis.net/28564-extended-problem.html)

CT86 26. Aug 2004 13:51


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

Steve 26. Aug 2004 13:54

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

s14 26. Aug 2004 13:55

Re: Extended Problem
 
Hallo,
schon "FloatToStr" probiert :stupid:

Gruß
s14

CT86 26. Aug 2004 14:07

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);

mytar 26. Aug 2004 14:09

Re: Extended Problem
 
Ich glaube es gibt auch Delphi-Referenz durchsuchenTryFloatToStr!

Luckie 26. Aug 2004 14:21

Re: Extended Problem
 
Und noch eine Möglichkeit, wahrscheinlich die flexibelste: Delphi-Referenz durchsuchenFromat.

CT86 26. Aug 2004 14:22

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:
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;
:wall:

mfg
CT86

Luckie 26. Aug 2004 14:24

Re: Extended Problem
 
Delphi-Quellcode:
StringGrid1.Cells[x,y] := 'Mein Text';

mytar 26. Aug 2004 14:25

Re: Extended Problem
 
Delphi-Quellcode:
StringGrid1.Cells[ACol, ARow] := FormatFloat(' 0.0   ;-0.0   ', x) + FormatFloat('0.###',y));

fkerber 26. Aug 2004 14:26

Re: Extended Problem
 
Hi!

Zitat:

Zitat von CT86
Meine Frage, wie bekomme ich di ausgabe in ein StringGrid anstatt in ein Memo?? :wiejetzt:

Hat sich die Ursprungsfrage erledigt, oder geht die Umwandlung noch nicht?
Wegen dem oben zitierten erstellst du am besten einen neuen Thread, dann geht es nicht so durcheinander :wink:

Ciao Frederic

CT86 26. Aug 2004 14:32

Re: Extended Problem
 
Hey
Also wenn ich das von luckie ausprobiere kommt das hier:
Delphi-Quellcode:
[Error] Unit1.pas(143): Incompatible types: 'Integer' and 'Extended'
und wenn ich das von mytar eingebe kommt das hier:
Delphi-Quellcode:
[Error] Unit1.pas(144): Incompatible types: 'Integer' and 'TStringGrid'
:wiejetzt: :wiejetzt: Also irgenwie hab ich echt kein peil :gruebel:
mfg
CT86

PS: Hab ihr vielleicht noch ne Idee :?:

fkerber 26. Aug 2004 14:39

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

CT86 26. Aug 2004 14:55

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:
StringGrid1.Cells[0, 1] := FormatFloat('-0.0   ', x);
StringGrid1.Cells[1, 1] := FormatFloat('0.###',y);
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:
mfg
CT86

mytar 26. Aug 2004 16:08

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';

CT86 26. Aug 2004 16:53

Re: Extended Problem
 
Zitat:

Zitat von mytar
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';

Das hat leider nichts Funktioniert!!!
Wenn ich es Starten will kommt diese Meldung:

Delphi-Quellcode:
[Error] Unit1.pas(140): For loop control variable must be simple local variable
mfg
CT86

Luckie 26. Aug 2004 16:55

Re: Extended Problem
 
Dannm mach das, was die fehlermeldung sagt. Deklarier die Zählvariable der Schleife als lokale Variable.

CT86 26. Aug 2004 19:57

Re: Extended Problem
 
Zitat:

Zitat von Luckie
Dannm mach das, was die fehlermeldung sagt. Deklarier die Zählvariable der Schleife als lokale Variable.


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:
[Error] Unit1.pas(140): For loop control variable must be simple local variable
Luckie ist ja leider nicht mehr da, gibt es vielleicht jemand der mir das erklären kann :wall:
mfg
CT86

nailor 26. Aug 2004 20:11

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.

CT86 26. Aug 2004 20:21

Re: Extended Problem
 
Hey nailor,
mytar hat das hier geschrieben:

Delphi-Quellcode:
with StrinGrid1 do
for Col := 1 to ColCount do
  for Row := 1 to RowCount do
   Cells[Col, Row] := 'Dein String';
Und da kommt hinter dem ersten "to" diese Meldung!!! Kannst du damit was anfangen? Ich leider nicht!
mfg
CT86

Nikolas 26. Aug 2004 20:25

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.

CT86 26. Aug 2004 20:34

Re: Extended Problem
 
Zitat:

Zitat von Toxman
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.

Nein tut mir leid hilft auch nicht, dann kommt diese Fehlermeldung:
Delphi-Quellcode:
[Error] Unit1.pas(132): Undeclared identifier: 'Col1'
Aber dnake trotzdem :zwinker:
mfg
CT86

Nikolas 26. Aug 2004 20:38

Re: Extended Problem
 
zeig doch mal die ganze function oder procedure zusammen mit deinen Variablndeklarationen. So wird's schwierig

CT86 26. Aug 2004 20:48

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

nailor 26. Aug 2004 20:53

Re: Extended Problem
 
Zitat:

Zitat von CT86
Hey nailor,
mytar hat das hier geschrieben:

Delphi-Quellcode:
with StrinGrid1 do
for Col := 1 to ColCount do
  for Row := 1 to RowCount do
   Cells[Col, Row] := 'Dein String';
Und da kommt hinter dem ersten "to" diese Meldung!!! Kannst du damit was anfangen? Ich leider nicht!
mfg
CT86

welche meldung?

CT86 26. Aug 2004 20:56

Re: Extended Problem
 
Hey

Delphi-Quellcode:
[Error] Unit1.pas(140): For loop control variable must be simple local variable
Diese Meldung hier!
mfg
Ct86

nailor 26. Aug 2004 21:01

Re: Extended Problem
 
Delphi-Quellcode:
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.
so. denk denk. was könnte man machen sollen? ps:

bei mir gibts keinen error, sondern der kompiliert mit:

Zitat:

[Warnung] Unit1.pas(30): FOR-Schleifenvariable muss eine einfache lokale Variable sein

Nikolas 26. Aug 2004 21:03

Re: Extended Problem
 
Wo hast du denn Row und Col deklariert? Ausserdem glaube ich wirklich, dass hier das Problem beim with .. do liegt.

CT86 26. Aug 2004 21:05

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

CT86 26. Aug 2004 21:27

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

Nikolas 26. Aug 2004 21:33

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;

CT86 26. Aug 2004 21:48

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

Nikolas 26. Aug 2004 22:13

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:

mytar 27. Aug 2004 10:53

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 03:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz