Zase já-need second help – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zase já-need second help – Delphi – Fórum – Programujte.comZase já-need second help – Delphi – Fórum – Programujte.com

 

Dan Stahar0
Newbie
8. 9. 2006   #1
-
0
-

?au lidi!

Videot?ka mi ned? sp?t a po prvn?m vy?e?en?m probl?mu n?sleduje druh?, ne v?ak tak ?sp??n?. m?m zase sv?j starej dobrej stringgrid, do kter?ho si ukl?d?m data. A probl?m je v procedu?e nazvan? Voln? kazeta. Ta by teoreticky m?la (podle ??sel kazet) naj?t kazetu, na kter? je dost m?sta pro film zadan? d?lky. Ale nefunguje to. Tak zase otravuju tady s ??dost? o pomoc. M?m stringgrid
.................................................................................
..xxxxxxxxxxxx . ??slo kazety .xxxxxxxxxx .d?lka filmu .d?lka kazety . x.
................................................................................
.. . 1 . . 20 . 240 . .
.. . 1 . . 10 . 240 . .
.. . 1 . . 100 . 240 . .
.. . . . . . .
................................................................................

tam kde jsou x jsou nepodstatn? data. te? u asi ch?pete, jak to m? fungovat. se??st v?echny d?lky film? na jedn? kazet? a zjistit, jestli se tam ten o zadan? d?lce vejde. a takhle otestovat v?echny kazety a pokud bude odpov?dat, vypsat ji do mema. p?edem d?ky za pomoc. Danstahr

m?j zdroj?k:
procedure TForm1.Button4Click(Sender: TObject);
var a,b,c,d:integer;
arr,err:array [1..500] of integer;
begin
for a:=1 to 500 do
begin
arr[a]:=0;
err[a]:=0;
end;
c:=1;
d:=strtoint(edit12.text);
memo2.Clear;
memo2.Show;

begin
for a:=1 to stringgrid2.RowCount-1 do//vyp??e do jednoho pole ??sla kazet a do druh?ho zb?vaj?c? ?asy kazet
begin
b:=strtoint(stringgrid2.cells[2,a]);
if (b=arr[c]) then
begin
err[c]:=err[c]-strtoint(stringgrid2.cells[4,a]);
end
else
begin
c:=c+1;
arr[c]:=b;
err[c]:=strtoint(stringgrid2.cells[5,a]);
err[c]:= err[c]-strtoint(stringgrid2.cells[4,a]);
end;
end;
for a:=1 to stringgrid2.RowCount-1 do
begin
if (err[a]-d>=0) then memo2.lines.Add('Tento film se vejde na kazetu ?. ' + inttostr(arr[a]) + ' a zbyde ' + inttostr(err[a]-d) + ' minut voln?ho m?sta.');
end;

end;
end;

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
9. 9. 2006   #2
-
0
-

Zdravím,

Nebudu komentovat tvoje řešení, protože jsem ho opět nečetl. Čili přikládám kód, který tvůj problém snad vyřeší. Jen upozorním, že asi není úplně košér, při větším počtu kazet by se to mohlo hodně zpomalovat. A zase pár poznámek:

SG - TStrinGrid
Memo1 - TMemo



// naplni SG - jen pro ilustraci
procedure TForm1.FormCreate(Sender: TObject);
begin
SG.Cells[0,0] := 'Kazeta'; SG.Cells[1,0] := 'Delka filmu'; SG.Cells[2,0] := 'Delka kazety';
SG.Cells[0,1] := '3';SG.Cells[1,1] := '20';SG.Cells[2,1] := '240';
SG.Cells[0,2] := '1';SG.Cells[1,2] := '40';SG.Cells[2,2] := '240';
SG.Cells[0,3] := '2';SG.Cells[1,3] := '120';SG.Cells[2,3] := '240';
SG.Cells[0,4] := '2';SG.Cells[1,4] := '120';SG.Cells[2,4] := '240';
end;


procedure TForm1.Button1Click(Sender: TObject);
var i,j,sum, hour, lastId: integer;

begin
hour := StrToInt(Edit1.Text);
lastId := -1; // vychozi id - nemelo by v DB vubec existovat
for i:=1 to SG.RowCount-1 do
begin
sum := 0; // zabrana delka kazety
if lastId <> StrToInt(SG.Cells[0,i]) then // pokud jsme ji jeste nehledali
begin
for j := 1 to SG.RowCount-1 do
if SG.Cells[0,i] = SG.Cells[0,j] then // souhlasi id kazet?
sum := sum + StrToInt(SG.Cells[1,j]); // zvetsi
if(sum + hour) <= StrToInt(SG.Cells[2,i]) then
Memo1.Lines.Add('Kazeta: '+SG.Cells[0,i]+' a zbyde: '+
IntToStr(StrToInt(SG.Cells[2,i])-sum-hour)+'min');
lastId := StrToInt(SG.Cells[0,i]); // id naposledy pocitane kazety
end;
end;
end;

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Zase spamování — založil hlucheucho

Zase knizka — založil Datlik

Zase ten String!!! — založil Ex

Zase jsem se zasek :( — založil hmm

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý