AGB  ·  Datenschutz  ·  Impressum  







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

Kleines mathem. Problem

Ein Thema von Tommy1988 · begonnen am 6. Okt 2007 · letzter Beitrag vom 6. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
Tommy1988
(Gast)

n/a Beiträge
 
#1

Kleines mathem. Problem

  Alt 6. Okt 2007, 14:37
hallo, ich habe da ein kleines abr feines Problemchen.

undzwar siehts so aus:
Ich öffne eine Datei via OpenDialog, dann speichere ich die Dateigröße in Kilobyte(!) in einer variablen (Real).
- Angenommen die Datei ust 145 KB klein
Dann habe ich ein SpinEdit, dort trage ich z.b. 50 ein (angabe auch in KB).

145 wird nun durch 50 geteilt.

Mein Code, mal zu ansehen:
Delphi-Quellcode:
var
SpinEditEingabe: Integer
byte, kilobyte, megabyte: Real;
Parts, KBproPart, LetzterPart: Real;
begin
byte := vFileSize(Edit1.Text);
kilobyte := byte / 1024;
megabyte := kilobyte / 1024;
SpinEditEingabe := SpinEdit1.Value;
// rechnung komplett anders um MOD werde ich nicht
// herum kommen
Parts := RundeAufStelle(kilobyte / SpinEditEingabe, 0) - 1;

KBproPart := nSize;
LetzterPart := RundeAufStelle(kilobyte - (Parts * KBproPart), 2);
LetzterPart := LetzterPart * -1;

// x Parts á x KB gesamt, Label1
sLabel1.Caption := Format('%s Part(s) á %s KB und 1 ' +
'Part á %s KB gesamt',
[FloatToStr(Parts), FloatToStr(KBproPart),
FloatToStr(LetzterPart)]);
So, da wird mir dann angezeigt, dass wenn ich die 145 KB teile, X teile á XX KB habe
und dann ein part á YY kb. das YY sollte dann eigebntlich der REST von dem nicht mehr teilbaren da oben sein.

aber ich kriegs nicht hin. MOD funktionert nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 14:40
Nutze erstens mal den Typen Integer (order Int64) um deine Dateigrösse zu speichern. Ein Real ist ein Floatdatentyp, und du wirst keine Dateien haben mit 143,32 Byte.

Und dann kannst du dir die Operatoren mod und div anschauen, denn das ist es was du brauchst. Schlag mal in der Delphi Hilfe nach, da wirst du fündig werden.
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#3

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 14:41
Das ist mir klar

nciht byte, sondern kByte nutze ich.

sieht das denn nicht unschön aus, wenn ich eine datei als 145KB statt 145,49 KB anzeigen lasse?

Ich ändere mal alles flot ab
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#4

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 14:45
Für die reine Anzeige kannst Du doch in reellen Zahlen formatieren.Label.Caption := Format('Dateigröße %.2f kByte',[Groesse_in_Byte / 1024]);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#5

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 14:55
mein SpinEditChange sieht jetzt so aus:

Delphi-Quellcode:
// Dateigröße
try
byte := GetFileSizeA(sEdit1.Text);
kilobyte := byte div 1024;
megabyte := kilobyte / 1024;
nSize := SpinEdit1.Value;
// rechnung komplett anders um MOD werde ich nicht
// herum kommen. LÖSUNG suchen!
Parts := (kilobyte div nSize);

KBproPart := nSize;
LetzterPart := kilobyte - (Parts * KBproPart);
LetzterPart := LetzterPart;

// x Parts á x KB gesamt, Label1
sLabel1.Caption := Format('%s Part(s) á %s KB und 1 ' +
'Part á %s KB gesamt',
[IntToStr(Parts), IntToStr(KBproPart),
IntToStr(LetzterPart)]);
except
Showmessage('Es ist ein Fehler aufgetreten!');
end;
MOD habe ich zwar noch nicht untergebracht aber es klappt. ich gucke mal obs auch mit sehr großen dateien geht
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#6

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 14:59
Ok, shceint zu klappen ich wüsste nicht wo ich da jetzt noch MOD einbringen sollte..
mit dateien bis von 100kb bis 700 mb gehts mehr hab ich nicht probiert..

wo könnte man denn da MOD einsetzen?

also soweit ich in erinnerung habe ist MOD ja erm..
er guckt wieoft eine zahl in eine andere passt und schneidet den rest ab.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#7

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 15:01
Delphi-Quellcode:
KBproPart := nSize;
LetzterPart := kilobyte - (Parts * KBproPart);
LetzterPart := LetzterPart;
Das hab ich nicht verstanden (rein logisch).LetzterPart := kilobyte mod nSize; Und fertig ist die Laube.
Delphi-Quellcode:
sLabel1.Caption := Format('%s Part(s) á %s KB und 1 ' +
'Part á %s KB gesamt',
[IntToStr(Parts), IntToStr(KBproPart),
IntToStr(LetzterPart)]);
Das lässt sich aber auch vereinfachen:
Delphi-Quellcode:
sLabel1.Caption := Format('%d Part(s) á %d KB und 1 ' +
'Part á %d KB gesamt',
[Parts, KBproPart,
LetzterPart]);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#8

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 15:04
Zitat:
Das lässt sich aber auch vereinfachen:
Ist das verferinerte rein praktisch "schöner" oder "richtiger" ?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#9

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 15:06
In meinen Augen logischer. Wenn Du schon Format benutzt, verwende auch die zum Typ passenden Formatstrings, anstatt sie zu konvertieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Kleines mathem. Problem

  Alt 6. Okt 2007, 15:11
Int( TeilA / TeilB ) * TeilB = Rest
Christian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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