AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schleife für StringReplace

Ein Thema von Stevens · begonnen am 3. Jun 2006 · letzter Beitrag vom 16. Jun 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#11

Re: Schleife für StringReplace

  Alt 14. Jun 2006, 15:43
da die Abbruchbedingung der Funktion falsch ist, wenn sich in keine kleinere Einheit mehr umrechnen lässt, hier eine korrekte Version:


Delphi-Quellcode:
function xFloatToSym(Value : Extended) : String;
const
  S_UNITS = 'afpnµm kMGTP';

var Wert: Extended;
    Einheit : Integer;
begin
wert := Value;
Einheit := 7;
while ( wert < 1 ) and (Einheit > 1) do begin
  Wert := Wert * 1000;
  dec(Einheit);
end;

while (Wert >= 1000) and (Einheit < 12) do begin
  Wert := Wert / 1000;
  inc(Einheit)
end;
Result := Format('%g%s', [Wert, S_Units[Einheit]]);

end; // xFloatToSym
Delphi-Quellcode:
st := FloatToSym(0.00000000000002);
Showmessage(st);

st := xFloatToSym(0.00000000000002);
Showmessage(st);


st := FloatToSym(1000000000000000000);
Showmessage(st);

st := xFloatToSym(1000000000000000000);
Showmessage(st);

st := FloatToSym(0.00000000000000000001);
Showmessage(st);

st := xFloatToSym(0.00000000000000000001);
Showmessage(st);
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Stevens

Registriert seit: 3. Jun 2006
6 Beiträge
 
#12

Re: Schleife für StringReplace

  Alt 16. Jun 2006, 10:48
Hallo Leute

Häng an meinem Messprogramm fest.
Speichere meine Messwerte in einem StringGrid
Diese werden dort mit einem Zahlen- Wert und dem zugehörigen Faktor gespeichert. z.B. 390 µ oder 900n

Jetzt will Ich diese Werte in einem Chart anzeigen lassen, was auch ohne µ oder n funktioniert. Ist klar das Delphi mir jetzt aber sagt 390 µ ist kein gültiger Gleitkommawert.

Habs jetzt so versucht:

Delphi-Quellcode:

for i := (StringGrid1.Rowcount-z) to StringGrid1.Rowcount-1 do begin
while Pos('µ', i) > 0 do
    Delete(i,Pos('µ', i),1);
Series1.Addxy(........)
...
...
end;

Funktioniert, nicht! Fehlermeldung: Inkompatible Typen
Hab die Frage schon in einem anderen Forum gestellt.
Liegt an dem i in der pos(). Ist der Schleifenzähler.Nur was muss da rein?
StringGrid.cells[2,i] ?
Da wird mir angezeigt, dass Konstantenobjekt kann nicht als var- Parameter übergeben werden.
Vielleicht kann man mir hier helfen. In anderen Foren kriegt man nur dumme Sprüche und keine Tipps!



Was ist mein Fehler??
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Schleife für StringReplace

  Alt 16. Jun 2006, 11:11
Angenommen Deine Werte stehen in der ersten Spalte Deines StringGrids

Dann sollte das alles ungefähr so aussehen.

Delphi-Quellcode:

for row := (StringGrid1.Rowcount-z) to StringGrid1.Rowcount-1 do
begin
  s:=StringGrid1.cells[row,0];

  for j:=1 to length(Stringgrid1.cells[row,0]) do
    begin
      if s[j] = 'µthen
        s[j] := ' ';
    end;
  StringGrid1.cells[row,0]:=s;
end;
Dein Code:
Delphi-Quellcode:
for i := (StringGrid1.Rowcount-z) to StringGrid1.Rowcount-1 do // i ist eine Zählvariable (Typ: integer oder byte)
begin
  while Pos('µ', i) > 0 do // i ist nicht der String in dem Du µ suchst, mal in der OH pos anschauen
    Delete(i,Pos('µ', i),1); // i ist nicht der String aus dem Du | rauslöschen willst, mal in der OH delete anschauen
  Series1.Addxy(........)
...
...
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Schleife für StringReplace

  Alt 16. Jun 2006, 11:26
Zitat von Stevens:
Funktioniert, nicht! Fehlermeldung: Inkompatible Typen
Hab die Frage schon in einem anderen Forum gestellt.
Liegt an dem i in der pos(). Ist der Schleifenzähler.Nur was muss da rein?
StringGrid.cells[2,i] ?
Da wird mir angezeigt, dass Konstantenobjekt kann nicht als var- Parameter übergeben werden.
Vielleicht kann man mir hier helfen. In anderen Foren kriegt man nur dumme Sprüche und keine Tipps!
Sorry, aber findest du es nicht ein bisschen dreist, sowas zu behaupten und gleichzeitig die Hinweise, die du bekommen hast hier mit aufzunehmen?
Dass es an dem "i" in Pos liegt, wurde dir nämlich erklärt. (Fett hervorgehoben)
Peter
  Mit Zitat antworten Zitat
Stevens

Registriert seit: 3. Jun 2006
6 Beiträge
 
#15

Re: Schleife für StringReplace

  Alt 16. Jun 2006, 19:39
Geschafft!
Danke für die Hilfe, insbesonderem Klaus01.
Das war der richtige Ansatz, bzw. fast die Lösung!

Hier mal der nun funktionierende Quellcode
Delphi-Quellcode:
else
          for i:=(Form1.StringGrid1.Rowcount-z) to (Form1.StringGrid1.Rowcount-1) do begin
          begin
          s:=Form1.StringGrid1.cells[2,i];

           for j:=1 to length(Form1.Stringgrid1.cells[2,i]) do
           begin
           if s[j] = 'µthen
           s[j] := ' ';
           end;
           Form1.StringGrid1.cells[2,i]:=s;
           series1.addxy(i,Strtofloat(s),Form1.StringGrid1.cells[1,i]);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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