Autor Beitrag
Georg08 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Mo 11.05.09 19:26 
Dass ist im moment nur das "gerüst", die dateien werden schon noch verändert...
ich habe hier mal den wichtigsten teil vom quellcode:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
var
  Form1: TForm1;
  datei : TFileStream;
  inhalt : char;
  uebergabe : Array[1..10] of string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  i2: Byte;
  itemp : string;
  Datei: TFileStream;
begin
  if OpenDialog1.Execute then
  begin
    Datei := TFileStream.Create(Opendialog1.FileName, fmOpenRead);
    try
      for i := 1 to Datei.Size do
      begin
        Datei.ReadBuffer(i2, SizeOf(i2));
        itemp := itemp+IntToStr(i2);
        uebergabe[1] := itemp;
        uebergabe[2]:= IntToStr(datei.Size);
      end;
    finally
      Datei.Free;
      richedit1.Text:=itemp;

    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  i2: Byte;
  itemp : string;
  Datei: TFileStream;
begin
if SaveDialog1.Execute then
begin
datei := TFileStream.Create(Savedialog1.FileName, fmCreate);

for i := 1 to Sizeof(uebergabe[2]) do
begin
  datei.Write(i2, sizeof(i2));
end;


datei.Free;

end;

end;

wenn ich diesen ausführe kommt beim lesen einer datei z.B.:
ausblenden Quelltext
1:
116101115116100971161011054432100971151153210599104321001051013298121116101115321051101153210211111411710932115116101108108101110321079711011032594541					

aber wenn ich mit diesem code speichere kommt nurnoch:
ausblenden Quelltext
1:
0000					

heraus :(

immernoch meine frage wie löscht man beiträge oder führt 2 zusammen?

Edit:
Zumindest ein Anfang:
Ich hab im speichern was geändert un der speichter
ausblenden Quelltext
1:
020424618020424618020424618020424618					

aber ich kann nich wirklich erkennen wo das her kommt xD
hier der neue code (nur das geänderte)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if SaveDialog1.Execute then
begin
datei := TFileStream.Create(Savedialog1.FileName, fmCreate);

for i := 1 to Sizeof(uebergabe[2]) do
begin
  datei.Write(i2, sizeof(strtoint(uebergabe[2])));
end;
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 11.05.09 19:33 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dann kannst du das ganze auch direkt kopieren...

Gib's auf, user profile iconjaenicke - auf diesen Ratschlag hört er nicht:

*scroll scroll scroll*

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Am besten nimmst du dir zwei Streams und liest aus dem einen, verschlüsselst es und schreibst dann das Ergebnis in den zweiten Stream.
Georg08 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Mo 11.05.09 19:35 
also 1. bringts nichts, wenn ich nur kopiere...
und 2. isses doch egal wieviele streams ich hab...
3. will ich nicht nur verschlüsseln, z.B. soll man auch die bytes in eine textdatei schreiben können und von dort aus wieder in eine normale wandeln...
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 11.05.09 19:35 
Beiträge löschen kannst du nicht selber, können nur die Admins / mods hier.

Zu deinem Problem:
1. du speicherst i2.. i2 ist eine lokale Variable.. i2 ist nicht definiert, heißt, da stehen zufällig Werte drin.. WOHER soll i2 den Wert bekommen, den du eingelesen hast?
2. Deine Schleife läuft bis SizeOf(LängeAlsString).. WARUM? Warum Sizeof? In LängeAlsString hast du doch den Wert den du brauchst.

_________________
PROGRAMMER: A device for converting coffee into software.
Georg08 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Mo 11.05.09 19:39 
zu 1.
ok ich hab jetzt
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
if SaveDialog1.Execute then
begin
datei := TFileStream.Create(Savedialog1.FileName, fmCreate);

i2 := StrToInt(uebergabe[2]);

for i := 1 to Sizeof(uebergabe[2]) do
begin
  datei.Write(i2, sizeof(strtoint(uebergabe[2])));
end;

und uebergabe[2] ist oben definiert als datei.size:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
    Datei := TFileStream.Create(Opendialog1.FileName, fmOpenRead);
    try
      for i := 1 to Datei.Size do
      begin
        Datei.ReadBuffer(i2, SizeOf(i2));
        itemp := itemp+IntToStr(i2);
        uebergabe[1] := itemp;
        uebergabe[2]:= IntToStr(datei.Size);


und zu 2.: versteh ich nich ganz was du willst :D

Edit:
ok ich hab jetzt sizeof weg:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
if SaveDialog1.Execute then
begin
datei := TFileStream.Create(Savedialog1.FileName, fmCreate);

i2 := StrToInt(uebergabe[2]);

for i := 1 to i2 do
begin
  datei.Write(i2, i2);
end;


Zuletzt bearbeitet von Georg08 am Mo 11.05.09 19:47, insgesamt 1-mal bearbeitet
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 11.05.09 19:45 
Junge.. du weißt nicht, was du da tust..
du wandelst irgendwelche Werte vollkommen sinnlos um, speicherst diese ab, und wunderst dich, dass nicht das selbe wieder rauskommt...

Also:
in uebergabe[2] steht die GRÖSSE der Datei.. als STRING, warum auch immer.

Ich bin nun mal so frei und lauf deinen Quellcode mal durch..
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
if SaveDialog1.Execute then
begin
datei := TFileStream.Create(Savedialog1.FileName, fmCreate);

i2 := StrToInt(uebergabe[2]);

for i := 1 to SizeOf(uebergabe[2]) do
begin
  datei.Write(i2, sizeof(strtoint(uebergabe[2])));
end;

5: Dateigröße wieder in integer umwandeln, und in i2 schreiben
7: Eine Schleife von 1 bis GrößeVon(DateigrößeAlsString) DateigrößeAlsString ist z.B. '123', also drei Zeichen, also läuft deine Schleife von 1 bis 3.. da in nem String noch Pointer, Längenbyte und so nen Rotz bei ist, schlagen wir noch ein wenig drauf.. sagen wir von 1 bis 6.
9: Nun schreibst du den Wert aus Zeile 5 in den Stream. 6 Mal den selben Wert, da du diesen ja nicht mehr änderst.. was soll dabei wohl rauskommen? Ganz nebenbei kannst du auch einfach SizeOf(i2) schreiben, hat das selbe Ergebnis wie SizeOf(StrToInt(GrößeAlsString)) da du ja hier am Ende auch nur die Größe eines Integers bestimmst.

_________________
PROGRAMMER: A device for converting coffee into software.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 11.05.09 19:46 
user profile iconGeorg08 hat folgendes geschrieben Zum zitierten Posting springen:
und uebergabe[2] ist oben definiert als datei.size:
Nein, du hast Size als String :roll: in die Variable gelegt. Obwohl du es richtig schon gezeigt bekommen hattest. SizeOf gibt dir aber die Größe der Variablen zurück, also 4 Byte...

Das hat so keinerlei Sinn, du hast keine Ahnung was da passiert und rätst herum. So wird das nichts. Ohne lernen kommst du nicht weiter.

Einen sehr guten Crashkurs findest du hier:
crashkurs.christian-stelzmann.de
und die neue Version speziell ab Turbo Delphi:
www.christian-stelzm...shkurs_reloaded.html

Ein weiteres gutes Online-Buch:
de.wikibooks.org/wik...grammierkurs:_Delphi

Und ansonsten habe ich keine Lust mehr hier etwas zu schreiben. Punkt.
Georg08 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Mo 11.05.09 19:51 
delphi is eigentlich nich mein problem... nur die bytes hab ich noch nie benutzt...
außerdem hab ich genug bücher über delphi...
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 11.05.09 19:57 
user profile iconGeorg08 hat folgendes geschrieben Zum zitierten Posting springen:
delphi is eigentlich nich mein problem... nur die bytes hab ich noch nie benutzt...

Das ist widersprüchlich. Du gehst mit Ressourcen sehr verschwenderisch um, was nicht gerade der Stil eines guten Programmierers ist. Und genau das ist auch dein Problem. Du solltest dich damit beschäftigen, wie groß welcher Datentyp ist und wann er gebraucht wird.

user profile iconGeorg08 hat folgendes geschrieben Zum zitierten Posting springen:
außerdem hab ich genug bücher über delphi...

Hast du sie auch gelesen und verstanden? Wenn nicht, dann solltest du dir vielleicht wirklich mal den Crashkurs anschauen, der ist gut und einfach geschrieben.