| Autor |
Beitrag |
Petros
      
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: 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..
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
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 24.05.11 04:23
Prinzipiell ist der Quelltext schon richtig. Das hier sieht aber schon einmal höchst verdächtig aus: Petros hat folgendes geschrieben : | 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
      
Beiträge: 200
Erhaltene Danke: 4
Win XP, W7
Delphi 2005 Prof.
|
Verfasst: Di 24.05.11 06:57
Hallo,
ich denke, da mußt Du wohl 2 Zeilen daraus machen:
Delphi-Quelltext 1: 2:
| L1.Caption := Form2.Edit1.Text; IdHttp1.Get(L1.caption); |
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 24.05.11 07:00
colaka hat folgendes geschrieben : | L1.Caption := Form2.Edit1.Text;
IdHttp1.Get(L1.caption); |
Und das Ergebnis wirfst du einfach weg... was hat das für einen Sinn?
|
|
colaka
      
Beiträge: 200
Erhaltene Danke: 4
Win XP, W7
Delphi 2005 Prof.
|
Verfasst: Di 24.05.11 07:38
Ok,
dann muß es wohl so heißen:
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 Narses: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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...
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.
Wie gesagt: Eigentlich war die Zeile korrekt, vorausgesetzt das Formular Form2 existiert in dieser globalen Variablen...
|
|
Petros 
      
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: Di 24.05.11 16:07
ja form2 exestriert. In der Form2 sind mehrere edit felder ich zeige es mal anhand des codes
Form1
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
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); 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
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: 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 
      
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: 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
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: 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 
      
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: 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
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Di 24.05.11 16:51
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
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: 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 
      
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: 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
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: Di 24.05.11 16:56
Nö
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 
      
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: 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
      
Beiträge: 595
Erhaltene Danke: 4
Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
|
Verfasst: Di 24.05.11 17:06
Poste mal die Einstellungen von der Indy-Komponente...
|
|
Petros 
      
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: 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
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 public 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
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 public 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
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 131
Erhaltene Danke: 1
Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
|
Verfasst: Di 24.05.11 18:01
alle datein sind als zip gepackt und im anhang
Einloggen, um Attachments anzusehen!
|
|
|