AGB  ·  Datenschutz  ·  Impressum  







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

strtohex

Ein Thema von ReVenGer · begonnen am 12. Jun 2007 · letzter Beitrag vom 13. Jun 2007
Antwort Antwort
Seite 3 von 4     123 4      
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#21

Re: strtohex

  Alt 12. Jun 2007, 21:39
Delphi-Quellcode:
Procedure stringtohex;
var
  fs: TFileStream;
  lpBuffer: array of Byte;
  s: string;
  x: Integer;
 begin
   fs := TFileStream.Create('test.gam', fmOpenRead);
  try
    if (fs.Size > 0) then
    begin
      SetLength(lpBuffer, fs.Size);
      fs.Read(lpBuffer[0], fs.Size);
    end;
    s := '';
  for x := Low(lpBuffer) to High(lpBuffer) do
  begin
    s := s + IntToHex(lpBuffer[x], 2) + ' ';
  end;
   Memo1.Lines.Add(s);
  finally
    fs.Free;
  end;
 end;
Wenn mir das jetzt nochmal einer erklären könnte habt ihr mich glücklich gemacht.

[Error] Unit2.pas(71): Undeclared identifier: 'Memo1'
[Error] Unit2.pas(71): Missing operator or semicolon
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit2.pas'

Verstehe das nicht,warumdas mit showmessage geht, aber das memo nicht finden kann.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#22

Re: strtohex

  Alt 13. Jun 2007, 06:10
Guten Morgen.

StrToHex() ist bei dir eine unabhängige Prozedur und keine Methode der Form. Das ist auch richtig so, aber du kannst aus dieser Prozedur nicht auf Eigenschaften der Form (z.B. Memo1) zugreifen. Alle Ein- und Ausgaben deiner Prozedur sollten über entsprechende Parameter gesteuert werden.

Eine sinnvolle Signatur wäre:

procedure HexDump(const fn: TFileName; s: TStrings); Ein Aufruf könnte so aussehen: HexDump('C:\highscore.dat', Memo.Lines);

Für die Konvertierung von Bytes in ihre Hex-Darstellung gibt es die Funktion BinToHex().

Grüße vom marabu
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#23

Re: strtohex

  Alt 13. Jun 2007, 06:31
danke erstmal für die antwort,
aber wenn ich es so aufrufe, bekomme ich den undeclared identifier opendialog1.

stringtohex(OpenDialog1.FileName, Memo1.Lines.add);
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#24

Re: strtohex

  Alt 13. Jun 2007, 07:59
Vermutlich hast du an der Stelle, an der du den Aufruf von StrToHex() machst, keinen Zugriff auf OpenDialog1. Kannst du den Aufruf mal in seinem Kontext zeigen?
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#25

Re: strtohex

  Alt 13. Jun 2007, 08:40
Ich hätte bei Assembler bleiben sollen

Delphi-Quellcode:
Procedure stringtohex(const fn: TFileName; sg: tStrings);
var
  fs: TFileStream;
  lpBuffer: array of Byte;
  x: Integer;
  s: string;
 begin
   fs := TFileStream.Create('test.gam', fmOpenRead);
  try
    if (fs.Size > 0) then
    begin
      SetLength(lpBuffer, fs.Size);
      fs.Read(lpBuffer[0], fs.Size);
    end;
    s := '';
  for x := Low(lpBuffer) to High(lpBuffer) do
  begin
    s := s + IntToHex(lpBuffer[x], 2) + ' ';
   end;
  // showmessage(s);
       finally
    fs.Free;
  end;
  end;


procedure TForm2.N3Click(Sender: TObject);
begin
 opendialog1.execute;
 HexDump(OpenDialog.FileName, Memo.Lines);
 //showmessage(opendialog1.filename); //Pfad
end;
  Mit Zitat antworten Zitat
Klaus01
Online

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

Re: strtohex

  Alt 13. Jun 2007, 08:42
HexDump(OpenDialog1.FileName, Memo.Lines); sollte es nicht openDialog1 heißen und nicht openDialog?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#27

Re: strtohex

  Alt 13. Jun 2007, 08:48
sorry, hatte ich hinterher korrigiert.
trotzdem sagt er mir undeclared identifier.

ich versteh das nicht, in assembler konnte ich immer direkt auf sachen zugreifen, ohne umwege.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#28

Re: strtohex

  Alt 13. Jun 2007, 08:50
Manchmal möchte man den OpenDialog abbrechen:

Delphi-Quellcode:
procedure TForm2.N3Click(Sender: TObject);
begin
  with OpenDialog1 do
    if Execute then
      StrToHex(FileName, Memo.Lines);
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#29

Re: strtohex

  Alt 13. Jun 2007, 14:14
Zitat von ReVenGer:
trotzdem sagt er mir undeclared identifier.
Und du bist dir sicher, das es den auch wirklich gibt? Eventuell hast du ihn gelöscht oder umbenannt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#30

Re: strtohex

  Alt 13. Jun 2007, 16:51
Hallo,

ich vermute, dass die Komponente OpenDialog1 auf einer anderen Form als Form2 zu finden ist. Falls sich OpenDialog1 auf Form1 befindet, dann musst du deinen Quellcode so abändern:

Delphi-Quellcode:
procedure TForm2.N3Click(Sender: TObject);
begin
  with Form1.OpenDialog1 do
    if Execute then
      StrToHex(FileName, Memo.Lines);
end;
Damit würde dann dein Code übersetzt, aber elegant ist das nicht. Da du aber noch schwer mit Delphi kämpfst, bringt es dir zumindest eine "schnelles" Erfolgserlebnis. Pascal und seine Nachkommen sind block-orientierte Sprachen und die Variablen haben einen Gültigkeitsbereich. Lies zu diesem Thema in der Online-Hilfe das Topic "Delphi Sprachreferenz | Syntaktische Elemente | Blöcke und Gültigkeitsbereich" und du findest bestimmt einen Einstieg.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 06:59 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