AGB  ·  Datenschutz  ·  Impressum  







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

Pchar Rückgabe

Ein Thema von berbog · begonnen am 29. Dez 2002 · letzter Beitrag vom 30. Dez 2002
Antwort Antwort
Seite 3 von 3     123   
berbog

Registriert seit: 17. Dez 2002
Ort: Halver
12 Beiträge
 
Delphi 5 Professional
 
#21
  Alt 29. Dez 2002, 20:56
Hallo Dietmar

Ich habe grade in einer Alten Version nachgesehen (delphi4), dort ist der Decimalseparator in der Hilfe vorhanden, in der aktuellen dagegen nicht aber trotzdem weiss ich nicht weiter.

Gruss Bernd
wer früher stirbt ist länger tod
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#22
  Alt 29. Dez 2002, 21:50
Hallo Bernd!

Ist doch ganz einfach:

Code:
var
  DsSich : char;

begin
  DsSich := SysUtils.DecimalSeparator;
  SysUtils.DecimalSeparator := '.';

  // dein Code zur Umwandlung

  SysUtils.DecimalSeparator := DsSich;

end;
Damit sichest Du den alten Wert in DsSich, setzt einen neuen Wert ('.') ein und speicherst nach Deinem Code den gesicherten Wert wieder zurück (Merke: immer hinterher aufräumen, sonst stolpern andere über Deinem Müll!)

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
DerKapitalist

Registriert seit: 25. Dez 2002
37 Beiträge
 
#23
  Alt 29. Dez 2002, 22:52
@Berbog: schau, genau das meinte ich. Wenn das aber nicht in der DLL Dokumentation drinnen stand, dann würde ich die DLL auch nciht weiter verwenden, vermutlich ist sie dann unsauber programmiert.

klappts jetzt eigtl. mit dem DecimalSeparator?
  Mit Zitat antworten Zitat
berbog

Registriert seit: 17. Dez 2002
Ort: Halver
12 Beiträge
 
Delphi 5 Professional
 
#24
  Alt 29. Dez 2002, 23:12
Hallo

Ich Möchte euch allen danken
Die Idee mit dem Decimalseparator war goldrichtig
hier mein Code

analog1:=strAlloc(20);
decimalseparator:='.';

label11.Caption:= 'rückgabe TextToFloat '+ inttostr(typ);

label3.caption := 'Fehler ' + inttostr ((ND_Readchanai(1,1,0,analog1)));// Dll Funktion analog1 wird ausgelesen und ergebnis angezeigt
label4.caption := 'Messwert' +(analog1); //wird richtig als +0029 ausgegeben
label5.Caption := 'Stringlänge ' + inttostr (strlen(analog1));
label6.caption := 'Neuer Wert ' +(floattostr(strtofloat(analog1)));


series1.Addy((strtofloat(analog1)));
Allerdings muss ich den Decimalseparator noch zurücksetzen

Gruss Bernd
wer früher stirbt ist länger tod
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#25
  Alt 30. Dez 2002, 02:25
Moin Dietmar,

grundsätzlich ist es eine sehr gute Idee aufzuräumen, nachdem man etwas verändert hat.
DecimalSeparator gehört allerdings zu den Dingen, bei denen es nicht zwingend notwendig ist, falls nicht gerade mehrere Personen an dem Projekt arbeiten, oder arbeiten könnten.
Dadurch werden ja keine Systemeinstellungen verändert, sondern nur eine SysUtils interne Variable geändert.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#26
  Alt 30. Dez 2002, 15:50
Hallo Christian!

Natürlich werden bei DecimalSeparator keine Systemeinstellungen verändert, aber:
Wenn man nicht daran denkt, zeigen andere Programmteile dann ein merkwürdiges Verhalten. Vielleicht benötigt der Programmierer an anderer Stelle ja den voreingestellten Wert - und eine Veränderung wirkt sich für den Rest des Programmlaufs aus! Nicht aufzuräumen führt dazu, daß andere Programmteile je nach Programmablauf unterschiedlich reagieren. Ausnahme: Die Einstellung wird im "initialization"-Abschnitt einer Unit durchgeführt und nicht von einer anderen überschrieben.

Im Übrigen sollte man vielleicht noch ein Wenig Ressourcenschutz hinzufügen:
Code:
// Einstellungen vornehmen
try
  // Arbeiten
finally
  // aufräumen
end;
Dann wird auch bei einem Fehler noch aufgeräumt.
Das ist besonders wichtig, wenn die Prozedur von irgendwo aufgerufen wird und dort mit TRY Fehler abgefangen werden (Merke: einmal TRY, immer TRY), da auch mehrfach verschachtelte Programmaufrufe bei Abbruch-Fehlern aller Art zum letzten geöffneten TRY zurückkehren und dort EXCEPT bzw. FINALLY ausführen. EXCEPT ist besonders eklig, weil dann ein Fehler bei IntToStr möglicherweise als "Dateifehler" angezeigt wird und die Ursache schwer zu finden ist.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 08: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