Autor Beitrag
Petros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Di 24.05.11 02:17 
Hi Delphianer ich habe mal wieder ein problem und weiß keinen lösungsweg und suche hat mir nix ergeben..

ausblenden Delphi-Quelltext
1:
2:
  
L1.Caption  := IdHttp1.Get(Form2.Edit1.Text); der text inhalt wird aus einer ini datei geladen


Folgenes ich speicher informationen in einer ini datei, in der ini ist eine adresse enthalten die bei jedem start in ein edit.text übergeben wird, diese wiederrum liest informationen von meinem server und gibt diese dann an einem Label weiter. Natürlich könnte ich diese adresse auch direckt über IDHTTP abrufen aber da sich die text datei wo idhttp seine informationen her abruft sich alle 2 tage ändert dachte ich mir das ich dann per edit feld dort die adresse eintrage und nach belieben dann verändern kann. Nun kommt mein problem ich bekomme wenn ich das programm starte immer die meldung

"Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 005FD919 in module 'project1.exe'. Read of address 000002F8'. Process stopped. Use Step or Run to continue."

PS. bevor jetzt jemand irgendwas wegen sicherheit sagt die datei die abgerufen werden soll ist eine log.txt datei von meinem chat

Ich hoffe es war etwas verständlich und mir kann geholfen werden..

MFG Petros
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 24.05.11 04:23 
Prinzipiell ist der Quelltext schon richtig. Das hier sieht aber schon einmal höchst verdächtig aus:
user profile iconPetros hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
  
L1.Caption  := IdHttp1.Get(Form2.Edit1.Text); der text inhalt wird aus einer ini datei geladen
Bist du sicher, dass das die richtige Instanz des Formulars ist? Was sagt denn der Debugger? Ist da vielleicht etwas nil? Und wo genau kommt die Exception? Auch, wenn du im Debugger auf das Editfeld zugreifst?

Sonst fehlt halt ein wenig mehr Quelltext, diese Zeile für sich allein ist korrekt...
colaka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Di 24.05.11 06:57 
Hallo,

ich denke, da mußt Du wohl 2 Zeilen daraus machen:
ausblenden Delphi-Quelltext
1:
2:
L1.Caption := Form2.Edit1.Text;
IdHttp1.Get(L1.caption);


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 24.05.11 07:00 
user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
L1.Caption := Form2.Edit1.Text;
IdHttp1.Get(L1.caption);
Und das Ergebnis wirfst du einfach weg... was hat das für einen Sinn?
colaka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Di 24.05.11 07:38 
Ok,

dann muß es wohl so heißen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
Datei : TFilestream;
begin
L1.Caption := Form2.Edit1.Text;
IdHttp1.Get(L1.caption, Datei);
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 24.05.11 08:37 
In eine Datei schreiben ist hier doch gar nicht nötig. Es stand doch schon von Anfang an prinzipiell richtig da... :roll:

Du übergibst die Adresse und bekommst das Ergebnis als Rückgabewert. Warum du die Adresse plötzlich in den Label zwischenspeichern willst und stattdessen das Ergebnis wegwirfst, ist mir nicht wirklich klar. :nixweiss:

Wie gesagt: Eigentlich war die Zeile korrekt, vorausgesetzt das Formular Form2 existiert in dieser globalen Variablen...
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Di 24.05.11 16:07 
ja form2 exestriert. In der Form2 sind mehrere edit felder ich zeige es mal anhand des codes

Form1
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:
procedure TForm1.FormCreate(Sender: TObject);
begin
L1.Caption  := IdHttp1.Get(Form2.Edit1.Text);
L2.Caption  := IdHttp2.Get(Form2.Edit2.Text);
L3.Caption  := IdHttp3.Get(Form2.Edit3.Text);
L4.Caption  := IdHttp4.Get(Form2.Edit4.Text);
L5.Caption  := IdHttp5.Get(Form2.Edit5.Text);
L6.Caption  := IdHttp6.Get(Form2.Edit6.Text);
L7.Caption  := IdHttp7.Get(Form2.Edit7.Text);
L8.Caption  := IdHttp8.Get(Form2.Edit8.Text);
L9.Caption  := IdHttp9.Get(Form2.Edit9.Text);
end

procedure TForm1.FormShow(Sender: TObject);
var
  ini: TIniFile;
  filename: string;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'address.ini';
  ini := TIniFile.Create(filename);
  try
    form2.Edit1.Text := ini.ReadString('serveradressen''addresse1''');
    form2.Edit2.Text := ini.ReadString('serveradressen''addresse2''');
    form2.Edit3.Text := ini.ReadString('serveradressen''addresse3''');
    form2.Edit4.Text := ini.ReadString('serveradressen''addresse4''');
    form2.Edit5.Text := ini.ReadString('serveradressen''addresse5''');
    form2.Edit6.Text := ini.ReadString('serveradressen''addresse6''');
    form2.Edit7.Text := ini.ReadString('serveradressen''addresse7''');
    form2.Edit8.Text := ini.ReadString('serveradressen''addresse8''');
    form2.Edit9.Text := ini.ReadString('serveradressen''addresse9''');
  finally
    ini.Free;
  end;
end;


Form2
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm2.btn1Click(Sender: TObject);  // zum speichern der informationen für den nähsten abruf
var
  ini: TIniFile;
  filename: String;
 begin
  ini.Free;
  filename := ExtractFilePath(ParamStr(0)) + 'address.ini';
  ini := TIniFile.Create(filename);
  ini.WriteString('serveradressen''addresse1', Edit1.Text );
  ini.WriteString('serveradressen''addresse2', Edit2.Text );
  ini.WriteString('serveradressen''addresse3', Edit3.Text );
  ini.WriteString('serveradressen''addresse4', Edit4.Text );
  ini.WriteString('serveradressen''addresse5', Edit5.Text );
  ini.WriteString('serveradressen''addresse6', Edit6.Text );
  ini.WriteString('serveradressen''addresse7', Edit7.Text );
  ini.WriteString('serveradressen''addresse8', Edit8.Text );
  ini.WriteString('serveradressen''addresse9', Edit9.Text );
end;


ich bekomme nur die meldung von oben
Debugger Not..... ausgabe
"Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 005FD919 in module 'project1.exe'. Read of address 000002F8'. Process stopped. Use Step or Run to continue."

und dann makiert er mir in Form1 L1.Caption := IdHttp1.Get(Form2.Edit1.Text); aber keine error meldung oder andere warnungen

Die ausgegeben daten in den label.Captions übertrage ich manuell in einer exel Datenbank. eigendlich sollte das so funktionieren zumindest laut meiner logik aber ich kann mich auch täuchen und irgendwo einen fehler drin haben
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Di 24.05.11 16:30 
Also mal eine Sache:
Wieso nutzt du NEUN Indy-Komponenten??

Und wenn es geht (also von deiner Programmfunktion her) würde ich dir raten EINMAL eine Seite mit allen Labelbeschriftungen abrufen und diese einfach mit einem speziellen Zeichen zu trennen (z.B. "|" oder ";") und dann einfach die Ausgabe via Explode (Einfach bei Google suchen) auszugeben, dann brauchst du keine 9 mal irgendeine Seite herunterladen....
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Di 24.05.11 16:33 
OK habe den fehler schon gefunden ich musste nur vom Form1.create und form1.show umtauschen damit funktioniert das dann auch....


Zuletzt bearbeitet von Petros am Di 24.05.11 16:38, insgesamt 1-mal bearbeitet
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Di 24.05.11 16:35 
Ich meinte nicht die Version, sondern wieso du 9 Indy-Komponenten auf deine Form packst, bzw. in deinem Projekt benutzt und nicht einfach nur Eine? Damit kannst du auch alle Sachen nacheinander herunterladen...
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Di 24.05.11 16:40 
sry ich hatte mich verlesen gehabt und als ich grad mein text editieren wollte stand deins schon da ja das hatte ich mir auch schon überlegt alles über eine idhttp laufen zu lassen aber wie mache ich das???


die datein ändern sich alle stunde und alle 2 tage werden neue daten geschrieben deshalb lass ich sie ja alle gleichzeitig anzeigen. mir ist da kein besserer weg eingefallen früher habe ich die datein vom server per ftp geladen und manuell per editos ausgelesen aber das war mir zu umständlich..
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Di 24.05.11 16:51 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.FormCreate(Sender: TObject);
begin
L1.Caption  := IdHttp1.Get(Form2.Edit1.Text);
L2.Caption  := IdHttp1.Get(Form2.Edit2.Text);
L3.Caption  := IdHttp1.Get(Form2.Edit3.Text);
L4.Caption  := IdHttp1.Get(Form2.Edit4.Text);
L5.Caption  := IdHttp1.Get(Form2.Edit5.Text);
L6.Caption  := IdHttp1.Get(Form2.Edit6.Text);
L7.Caption  := IdHttp1.Get(Form2.Edit7.Text);
L8.Caption  := IdHttp1.Get(Form2.Edit8.Text);
L9.Caption  := IdHttp1.Get(Form2.Edit9.Text);
end


was ist daran denn so schwer? :p

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Di 24.05.11 16:52 
Naja, du machst einfach statt idhtpp1.Get, idhttp2.get etc. immer nur idhttp1.get und löschst die anderen 8 Komponenten ;) hat exakt die gleiche Funktion, spart dafür z.B. auch Speicher (sollte es zumindest ^^) und falls mal ein Fehler ist, brauchst du nicht alle Komponenten anschauen ob der Client falsch ist oder so ;)
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Di 24.05.11 16:53 
ok ich werd gleich mal versuchen ich hatte immer angenommen das das so nicht geht das jeder abruf eine eigene koponete braucht...
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Di 24.05.11 16:56 
;)

Du kannst das ganze auch noch mit einer While-Schleife o.ä komprimieren (sollte funktionieren), wenn die Labelnamen und die Editfelder die gleiche Zahl haben...
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Di 24.05.11 16:59 
so habs mal versucht über eine idhttp laufen zu lassen aber da bekomm ich einen fehler ausgegeben

siehe bild im anhang
Einloggen, um Attachments anzusehen!
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Di 24.05.11 17:06 
Poste mal die Einstellungen von der Indy-Komponente...
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Di 24.05.11 17:17 
ich hoffe das ist das richtige was du meinst

siehe anhang bild

hier noch mal der ganze quelltext

Form1
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:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
unit Unit1;

interface

uses
  Windows, IniFiles, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    L1: TLabel;
    L2: TLabel;
    L3: TLabel;
    L4: TLabel;
    L5: TLabel;
    L6: TLabel;
    L7: TLabel;
    L8: TLabel;
    L9: TLabel;
    button2: TButton;
    button3: TButton;
    procedure button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.button2Click(Sender: TObject);
begin
L1.Caption  := IdHttp1.Get(Form2.Edit1.Text);
L2.Caption  := IdHttp1.Get(Form2.Edit2.Text);
L3.Caption  := IdHttp1.Get(Form2.Edit3.Text);
L4.Caption  := IdHttp1.Get(Form2.Edit4.Text);
L5.Caption  := IdHttp1.Get(Form2.Edit5.Text);
L6.Caption  := IdHttp1.Get(Form2.Edit6.Text);
L7.Caption  := IdHttp1.Get(Form2.Edit7.Text);
L8.Caption  := IdHttp1.Get(Form2.Edit8.Text);
L9.Caption  := IdHttp1.Get(Form2.Edit9.Text);
end;

procedure TForm1.FormShow(Sender: TObject);
var
  ini: TIniFile;
  filename: string;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'address.ini';
  ini := TIniFile.Create(filename);
  try
    form2.Edit1.Text := ini.ReadString('serveradressen''addresse1''');
    form2.Edit2.Text := ini.ReadString('serveradressen''addresse2''');
    form2.Edit3.Text := ini.ReadString('serveradressen''addresse3''');
    form2.Edit4.Text := ini.ReadString('serveradressen''addresse4''');
    form2.Edit5.Text := ini.ReadString('serveradressen''addresse5''');
    form2.Edit6.Text := ini.ReadString('serveradressen''addresse6''');
    form2.Edit7.Text := ini.ReadString('serveradressen''addresse7''');
    form2.Edit8.Text := ini.ReadString('serveradressen''addresse8''');
    form2.Edit9.Text := ini.ReadString('serveradressen''addresse9''');
  finally
    ini.Free;
  end;
end;

procedure TForm1.button3Click(Sender: TObject);
begin
form2.Show;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
L1.Caption  := IdHttp1.Get(Form2.Edit1.Text);
L2.Caption  := IdHttp1.Get(Form2.Edit2.Text);
L3.Caption  := IdHttp1.Get(Form2.Edit3.Text);
L4.Caption  := IdHttp1.Get(Form2.Edit4.Text);
L5.Caption  := IdHttp1.Get(Form2.Edit5.Text);
L6.Caption  := IdHttp1.Get(Form2.Edit6.Text);
L7.Caption  := IdHttp1.Get(Form2.Edit7.Text);
L8.Caption  := IdHttp1.Get(Form2.Edit8.Text);
L9.Caption  := IdHttp1.Get(Form2.Edit9.Text);
end;

end.


Form2
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:
unit Unit2;

interface

uses
  Windows, Messages, IniFiles, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    button2: TButton;
    procedure button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.button2Click(Sender: TObject);
var
  ini: TIniFile;
  filename: String;
 begin
  filename := ExtractFilePath(ParamStr(0)) + 'address.ini';
  ini := TIniFile.Create(filename);
  ini.WriteString('serveradressen''addresse1', Edit1.Text );
  ini.WriteString('serveradressen''addresse2', Edit2.Text );
  ini.WriteString('serveradressen''addresse3', Edit3.Text );
  ini.WriteString('serveradressen''addresse4', Edit4.Text );
  ini.WriteString('serveradressen''addresse5', Edit5.Text );
  ini.WriteString('serveradressen''addresse6', Edit6.Text );
  ini.WriteString('serveradressen''addresse7', Edit7.Text );
  ini.WriteString('serveradressen''addresse8', Edit8.Text );
  ini.WriteString('serveradressen''addresse9', Edit9.Text );
    ini.Free;
end;

end.
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 24.05.11 17:52 
Häng am besten einfach einmal das Projekt insgesamt an, also die .pas, .dfm und .dpr Dateien als Zip-Archiv. Dann lässt sich das viel einfacher nachvollziehen...
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Di 24.05.11 18:01 
alle datein sind als zip gepackt und im anhang
Einloggen, um Attachments anzusehen!